คำถามติดแท็ก node.js

Node.js เป็นรันไทม์ I / O อะซิงโครนัส I-O แบบอิงเหตุการณ์ซึ่งไม่ใช้การบล็อกซึ่งใช้เอ็นจิ้น V8 JavaScript ของ Google และไลบรารี libuv มันใช้สำหรับการพัฒนาแอพพลิเคชั่นที่ใช้ความสามารถในการรัน JavaScript ทั้งบนไคลเอนต์และฝั่งเซิร์ฟเวอร์ดังนั้นจึงได้รับประโยชน์จากการใช้งานโค้ดได้อีกครั้งและขาดการสลับบริบท

25
ใน Node.js ฉันจะ "รวม" ฟังก์ชั่นจากไฟล์อื่น ๆ ของฉันได้อย่างไร?
สมมติว่าฉันมีไฟล์ชื่อ app.js. ค่อนข้างง่าย: var express = require('express'); var app = express.createServer(); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.get('/', function(req, res){ res.render('index', {locals: { title: 'NowJS + Express Example' }}); }); app.listen(8080); ถ้าฉันมีฟังก์ชั่นอยู่ภายใน "tools.js" ฉันจะนำเข้าพวกเขาไปใช้ใน apps.js ได้อย่างไร หรือ ... ฉันควรจะเปลี่ยน "เครื่องมือ" เป็นโมดูลแล้วต้องใช้หรือไม่ << ดูยากฉันค่อนข้างจะนำเข้าขั้นพื้นฐานของไฟล์ tools.js


10
การใช้ Node.js ต้องการกับการนำเข้า / ส่งออก ES6
ในโครงการที่ฉันร่วมมือกันเรามีสองตัวเลือกสำหรับระบบโมดูลที่เราสามารถใช้ได้: การนำเข้าโมดูลการใช้requireและการส่งออกโดยใช้และmodule.exportsexports.foo การนำเข้าโมดูลโดยใช้ ES6 importและการส่งออกโดยใช้ ES6export มีประโยชน์ด้านประสิทธิภาพการใช้หนึ่งมากกว่าอีก มีอะไรอีกบ้างที่เราควรรู้ถ้าเราจะใช้โมดูล ES6 เหนือโหนด

10
จะติดตั้งแพคเกจ NPM รุ่นก่อนหน้าได้อย่างไร
ฉันใช้ nvm เพื่อดาวน์โหลดโหนด v0.4.10 และติดตั้ง npm เพื่อทำงานกับโหนดเวอร์ชันนั้น ฉันพยายามติดตั้งแบบด่วนโดยใช้ npm install express -g และฉันได้รับข้อผิดพลาดที่ชัดเจนต้องใช้โหนดรุ่น> = 0.5.0 นี่เป็นเรื่องแปลกเนื่องจากฉันกำลังทำตามคำแนะนำสำหรับโหนด + express + mongodb การสอนที่นี่ที่ใช้โหนด v0.4.10 ดังนั้นฉันสมมติว่า express เป็น / พร้อมใช้งานกับโหนด v0.4.10 หากสมมติฐานของฉันถูกต้องฉันจะบอก npm ให้ดึงข้อมูลเวอร์ชันที่จะทำงานกับการตั้งค่าของฉันได้อย่างไร
915 node.js  npm 

16
ฉันจะรับวัตถุทั้งหมดใน console.log ของ Node.js ได้อย่างไรแทนที่จะเป็น '[Object]'
เมื่อทำการดีบักโดยใช้console.log()ฉันจะได้รับวัตถุเต็มได้อย่างไร const myObject = { "a":"a", "b":{ "c":"c", "d":{ "e":"e", "f":{ "g":"g", "h":{ "i":"i" } } } } }; console.log(myObject); ขาออก: { a: 'a', b: { c: 'c', d: { e: 'e', f: [Object] } } } แต่ฉันต้องการเห็นเนื้อหาของทรัพย์สินfด้วย

7
วิธีการเข้ารหัส Base64 ใน node.js?
node.js มีการเข้ารหัส base64 ในตัวหรือยัง เหตุผลที่ฉันถามสิ่งนี้คือเพราะfinal()จากcryptoสามารถส่งออกข้อมูลเลขฐานสิบหกไบนารีหรือ ascii เท่านั้น ตัวอย่างเช่น: var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv); var ciph = cipher.update(plaintext, 'utf8', 'hex'); ciph += cipher.final('hex'); var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv); var txt = decipher.update(ciph, 'hex', 'utf8'); txt += decipher.final('utf8'); ตามเอกสารupdate()สามารถส่งออกฐานข้อมูลที่เข้ารหัส 64 อย่างไรก็ตามfinal()ไม่รองรับ base64 ฉันพยายามแล้วมันก็จะพัง ถ้าฉันทำสิ่งนี้: var ciph = cipher.update(plaintext, 'utf8', 'base64'); …
839 node.js  encoding  base64 

15
การส่งอาร์กิวเมนต์บรรทัดคำสั่งไปยังสคริปต์ npm
scriptsส่วนหนึ่งของฉันpackage.jsonในปัจจุบันมีลักษณะเช่นนี้ "scripts": { "start": "node ./script.js server" } ... ซึ่งหมายความว่าฉันสามารถเรียกใช้npm startเพื่อเริ่มเซิร์ฟเวอร์ จนถึงตอนนี้ดีมาก อย่างไรก็ตามฉันต้องการให้สามารถเรียกใช้บางสิ่งบางอย่างnpm start 8080และส่งผ่านอาร์กิวเมนต์ไปยังscript.js(เช่นnpm start 8080=> node ./script.js server 8080) เป็นไปได้ไหม
819 javascript  node.js  npm 

11
npm WARN package.json: ไม่มีฟิลด์ที่เก็บ
ฉันติดตั้ง Express.js ด้วยคำสั่งต่อไปนี้: sudo npm install -g express ฉันได้รับคำเตือนดังต่อไปนี้: npm WARN package.json range-parser@0.0.4 No repository field. npm WARN package.json fresh@0.1.0 No repository field. npm WARN package.json methods@0.0.1 No repository field. npm WARN package.json methods@0.0.1 No readme data. npm WARN package.json cookie-signature@1.0.1 No repository field. npm WARN package.json send@0.1.0 No repository …
809 node.js  express  npm 

19
จะดึงพารามิเตอร์ข้อความค้นหา POST ได้อย่างไร
นี่คือรูปแบบที่เรียบง่ายของฉัน: <form id="loginformA" action="userlogin" method="post"> <div> <label for="email">Email: </label> <input type="text" id="email" name="email"></input> </div> <input type="submit" value="Submit"></input> </form> นี่คือรหัสExpress.js /Node.js ของฉัน: app.post('/userlogin', function(sReq, sRes){ var email = sReq.query.email.; } ฉันพยายามsReq.query.emailหรือsReq.query['email']หรือsReq.params['email']ฯลฯ ไม่ทำงานเลย undefinedพวกเขากลับมาทั้งหมด เมื่อฉันเปลี่ยนเป็นรับสายมันจะทำงานได้ดังนั้น .. ความคิดใด ๆ

10
การจัดการข้อยกเว้นที่ดีที่สุดสำหรับ Node.js
ฉันเพิ่งเริ่มลอง node.js ไม่กี่วันที่ผ่านมา ฉันรู้ว่าโหนดถูกยกเลิกเมื่อใดก็ตามที่ฉันมีข้อยกเว้นที่ไม่สามารถจัดการได้ในโปรแกรมของฉัน สิ่งนี้แตกต่างจากคอนเทนเนอร์เซิร์ฟเวอร์ปกติที่ฉันเคยเห็นที่ Worker Thread เท่านั้นที่ตายเมื่อเกิดข้อยกเว้นที่ไม่สามารถจัดการได้และคอนเทนเนอร์จะยังคงสามารถรับคำขอได้ นี่ทำให้เกิดคำถามสองสามข้อ: เป็นprocess.on('uncaughtException')วิธีเดียวที่มีประสิทธิภาพในการป้องกันหรือไม่ จะprocess.on('uncaughtException')จับข้อยกเว้นที่ไม่สามารถจัดการได้ในระหว่างการดำเนินการของกระบวนการอะซิงโครนัสด้วยหรือไม่ มีโมดูลที่สร้างขึ้นแล้ว (เช่นส่งอีเมลหรือเขียนไปยังไฟล์) ที่ฉันสามารถใช้ประโยชน์ในกรณีที่มีข้อยกเว้นที่ไม่ได้ตรวจสอบหรือไม่ ฉันขอขอบคุณตัวชี้ / บทความใด ๆ ที่จะแสดงแนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการข้อยกเว้นที่ไม่ได้ตรวจสอบใน node.js


30
ฉันจะอัพเดต Node.js ได้อย่างไร
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ตั้งค่าไว้ที่Stack Overflow แล้วใช่ไหม : Какобновить NodeJS? ฉันทำสิ่งต่อไปนี้เพื่ออัปเดต npm ของฉัน: npm update npm -g แต่ฉันไม่รู้ว่าจะอัปเดต Node.js ได้อย่างไร ข้อเสนอแนะใด ๆ (ฉันใช้ Node.js 0.4.1 และต้องการอัปเดตเป็น Node.js 0.6.1)


30
ข้อผิดพลาด: ไม่สามารถตั้งค่าส่วนหัวหลังจากพวกเขาถูกส่งไปยังลูกค้า
ฉันค่อนข้างใหม่กับ Node.js และฉันมีปัญหาบางอย่าง ฉันใช้ Node.js 4.10 และ Express 2.4.3 เมื่อฉันพยายามที่จะเข้าถึงhttp://127.0.0.1:8888/auth/facebookฉันจะถูกเปลี่ยนเส้นทางไปhttp://127.0.0.1:8888/auth/facebook_callback ฉันได้รับข้อผิดพลาดดังต่อไปนี้: Error: Can't render headers after they are sent to the client. at ServerResponse.<anonymous> (http.js:573:11) at ServerResponse._renderHeaders (/home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect/lib/patch.js:64:25) at ServerResponse.writeHead (http.js:813:20) at /home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/auth.strategies/facebook.js:28:15 at /home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/index.js:113:13 at next (/home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/strategyExecutor.js:45:39) at [object Object].pass (/home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/authExecutionScope.js:32:3) at [object Object].halt (/home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/authExecutionScope.js:29:8) at [object Object].redirect (/home/eugene/public_html/all_things_node/projects/fb2/node_modules/connect-auth/lib/authExecutionScope.js:16:8) …

24
อัพเกรด Node.js เป็นเวอร์ชั่นล่าสุดบน Mac OS
ขณะนี้ฉันกำลังใช้ Node.js v0.6.16 บน Mac OS X 10.7.4 ตอนนี้ฉันต้องการอัพเกรดมันเป็น Node.js v0.8.1 ล่าสุด แต่หลังจากดาวน์โหลดและติดตั้งไฟล์แพ็คเกจล่าสุดจาก nodejs.org ฉันพบว่าระบบยังคงใช้ v0.6.16 แทน v0.8.1 เมื่อฉันพิมพ์ "node -v" ในเทอร์มินัล มีขั้นตอนใดบ้างที่ฉันพลาดไป? หรือฉันควรถอนการติดตั้งเวอร์ชันเก่าอย่างละเอียดก่อนติดตั้งเวอร์ชันล่าสุดหรือไม่ BTW ฉันรู้ว่า nvm สามารถช่วยจัดการแพ็คเกจ nodejs https://github.com/creationix/nvm/ มีวิธีการอัพเกรด Node.js โดยไม่ใช้หรือไม่? ฉันได้ลองใช้ปัญหานี้ แต่ดูเหมือนว่าฉันไม่มีคำตอบที่ชัดเจนสำหรับคำถามนี้สำหรับ Node.js ล่าสุด
722 macos  node.js  upgrade 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.