ความแตกต่างระหว่าง 'npm start` &' node app.js` เมื่อเริ่มแอพ


188

express new 'filename'ผมได้ติดตั้งแอพลิเคชันโดยใช้คำสั่ง ฉันเพิ่งเรียนรู้ว่าคุณสามารถเริ่มใช้งานแอปพลิเคชันโดยใช้:

npm start

ป่านนี้ฉันได้ใช้:

node app.js

เพื่อเริ่มต้นเซิร์ฟเวอร์ของฉัน ไม่มีใครรู้ว่าความแตกต่างระหว่างสองคืออะไร? ขอบคุณ

คำตอบ:


267

จากหน้าคนเริ่มต้น NPM:

เรียกใช้สคริปต์ "เริ่มต้น" ของแพคเกจหากมีให้ หากไม่ได้ระบุเวอร์ชันไว้จะเริ่มเวอร์ชัน "แอ็คทีฟ"

เป็นที่ยอมรับว่าคำอธิบายนั้นไม่ช่วยเหลืออย่างสมบูรณ์และนั่นคือทั้งหมดที่กล่าวไว้ อย่างน้อยก็มีเอกสารมากกว่า socket.io

อย่างไรก็ตามสิ่งที่เกิดขึ้นจริงคือ npm ดูในไฟล์package.jsonของคุณและหากคุณมีสิ่งที่ชอบ

"สคริปต์": {"start": "coffee server.coffee"}

จากนั้นมันจะทำเช่นนั้น หาก npm ไม่พบสคริปต์เริ่มต้นของคุณจะมีค่าเริ่มต้นเป็น:

node server.js

 


4
ฉันเข้าใจแล้ว ดังนั้นโดยพื้นฐานแล้วสิ่งเดียวกันถ้าคุณเลือกที่จะเรียกใช้สคริปต์เพิ่มเติมในเวลารวบรวม
ReneGAED

1
หากคุณพิมพ์ "node server.js" ตามปกติแล้วใช่
Yusuf X

1
ฉันสร้างหนึ่งแอปใหม่การเริ่มต้น NPM ไม่ทำงาน สำหรับแอปเก่ามันทำงานได้ดี ข้อเสนอแนะใด ๆ
ผู้เรียน

1
ตัวอย่างเช่น "node app.js" จะไม่รับการเปลี่ยนแปลงของเราเตอร์ในขณะที่ "npm start" จะดำเนินการตามที่เรียกใช้งาน package.json สคริปต์เริ่มต้น (เช่น "node ./bin/www")
Igor Vaschuk

1
ถ้าคุณเริ่มต้นด้วย 'npm' มันสามารถรีสตาร์ทแอพได้โดยพิมพ์ 'rs' บนคอนโซล
Elf

10

เอกสารได้รับการปรับปรุง คำตอบของฉันมีการเปลี่ยนแปลงที่สำคัญเทียบกับคำตอบที่ยอมรับได้: ฉันต้องการสะท้อนเอกสารเป็นปัจจุบันและคำตอบที่ยอมรับมีลิงก์ที่ใช้งานไม่ได้

นอกจากนี้ฉันไม่เข้าใจเมื่อคำตอบที่ยอมรับตอบว่า "เป็นค่าเริ่มต้นnode server.js" ฉันคิดว่าเอกสารอธิบายพฤติกรรมเริ่มต้นชัดเจนขึ้น:

NPM เริ่มต้น

เริ่มแพ็คเกจ

สรุป

npm start [-- <args>]

ลักษณะ

นี้จะทำงานคำสั่งโดยพลการระบุไว้ในแพคเกจ " startคุณสมบัติ" ของ "scriptsวัตถุ" ถ้าไม่มี " start" ทรัพย์สินที่ระบุไว้ใน " scripts" วัตถุมันจะทำงานnode server.js

โดยสรุปการวิ่งnpm startสามารถทำหนึ่งในสองสิ่งต่อไปนี้:

  1. npm start {command_name}: เรียกใช้คำสั่งโดยพลการ (เช่นถ้าระบุคำสั่งดังกล่าวในstartคุณสมบัติของscriptsวัตถุของ package.json )
  2. npm start: อื่นถ้าไม่มีstartคุณสมบัติ (หรือไม่command_nameผ่าน): Run node server.js(ซึ่งอาจไม่เหมาะสมตัวอย่างเช่น OP ไม่มีserver.js; OP ทำงานnodeapp.js)
  3. ฉันบอกว่าฉันจะแสดงเพียง 2 รายการ แต่เป็นไปได้อื่น ๆ (เช่นกรณีข้อผิดพลาด) ตัวอย่างเช่นหากไม่มีpackage.jsonในไดเรกทอรีที่คุณเรียกใช้npm startคุณอาจเห็นข้อผิดพลาด:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.