Sự khác biệt giữa `npm start` &` nút app.js`, khi bắt đầu ứng dụng?


188

Tôi đã cài đặt một ứng dụng bằng cách sử dụng lệnh express new 'filename'. Tôi vừa biết rằng bạn có thể bắt đầu một ứng dụng bằng cách sử dụng:

npm start

Cho đến nay tôi đã sử dụng:

node app.js

để khởi động máy chủ của tôi. Bất cứ ai cũng biết sự khác biệt giữa hai là gì? Cảm ơn.

Câu trả lời:


267

Từ trang người đàn ông , npm bắt đầu:

chạy tập lệnh "bắt đầu" của gói, nếu được cung cấp. Nếu không có phiên bản nào được chỉ định, thì nó sẽ bắt đầu phiên bản "hoạt động".

Phải thừa nhận rằng mô tả đó hoàn toàn không có ích, và đó là tất cả những gì nó nói. Ít nhất đó là tài liệu nhiều hơn socket.io.

Nhưng dù sao, những gì thực sự xảy ra là vẻ NPM trong bạn package.json tập tin, và nếu bạn có một cái gì đó như

"script": {"start": "coffee server.coffee"}

sau đó nó sẽ làm điều đó Nếu npm không thể tìm thấy tập lệnh bắt đầu của bạn, nó sẽ mặc định là:

nút server.js

 


4
Ah tôi thấy. Vì vậy, về cơ bản là giống nhau trừ khi bạn chọn chạy nhiều tập lệnh hơn vào thời gian biên dịch.
ReneGAED

1
Nếu bạn thường gõ "node server.js", thì có.
Yusuf X

1
tôi đã tạo một ứng dụng mới, npm start không hoạt động. Đối với ứng dụng cũ, nó đang chạy tốt. bất kỳ đề xuất?
người học

1
Ví dụ: "nút app.js" sẽ không nhận thay đổi bộ định tuyến, trong khi "npm start" sẽ, vì nó thực thi tập lệnh start.json (như "nút ./bin/www")
Igor Vaschuk

1
nếu bạn bắt đầu với 'npm', nó có thể khởi động lại ứng dụng bằng cách chỉ cần gõ 'rs' trên bảng điều khiển.
Yêu tinh

10

Các tài liệu đã được cập nhật . Câu trả lời của tôi có những thay đổi đáng kể so với câu trả lời được chấp nhận: Tôi muốn phản ánh tài liệu được cập nhật và câu trả lời được chấp nhận có một vài liên kết bị hỏng.

Ngoài ra, tôi không hiểu khi câu trả lời được chấp nhận nói "nó mặc định là node server.js". Tôi nghĩ rằng tài liệu làm rõ hành vi mặc định:

bắt đầu

Bắt đầu một gói

Tóm tắc

npm start [-- <args>]

Sự miêu tả

Điều này chạy một lệnh tùy ý được chỉ định trong thuộc tính " start" của scriptsđối tượng "" của gói . Nếu không có thuộc tính " start" được chỉ định trên scriptsđối tượng "", nó sẽ chạy node server.js.

Tóm lại, chạy npm startcó thể làm một trong hai điều:

  1. npm start {command_name}: Chạy một lệnh tùy ý (nghĩa là nếu lệnh đó được chỉ định trong thuộc starttính của scriptsđối tượng của gói.json )
  2. npm start: Khác nếu không có thuộc starttính nào tồn tại (hoặc không command_nameđược thông qua): Chạy node server.js, ( có thể không phù hợp , ví dụ OP không có server.js; OP chạy nodeapp.js)
  3. Tôi nói rằng tôi sẽ chỉ liệt kê 2 mục, nhưng là các khả năng khác (ví dụ như các trường hợp lỗi). Ví dụ: nếu không có package.jsontrong thư mục nơi bạn chạy npm start, bạn có thể thấy lỗi:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.