`npm start`& `node app.js`,启动app时?

时间:2012-07-30 06:36:52

标签: node.js express npm

我使用命令express new 'filename'安装了一个应用程序。我刚刚了解到您可以使用以下方式启动应用程序:

npm start

到目前为止,我已经使用过:

node app.js

启动我的服务器。谁知道两者之间有什么区别?感谢。

2 个答案:

答案 0 :(得分:248)

来自man page,npm start:

  

运行包的“开始”脚本(如果提供了一个)。   如果未指定版本,则启动“活动”版本。

不可否认,这种描述完全没有用,而且就是这样。至少它比socket.io更有记录。

无论如何,真正发生的是npm在你的package.json文件中查找,如果你有类似

的内容
  

“scripts”:{“start”:“coffee server.coffee”}

然后它会那样做。如果npm找不到您的启动脚本,则默认为:

  

node server.js

答案 1 :(得分:9)

documentation has been updated。我的答案与接受的答案有很大的变化:我想反映文档是最新的,并且接受的答案有一些断开的链接。

另外,我不明白接受的答案何时说“默认为node server.js”。我认为文档阐明了默认行为:

  

NPM启动

     

启动套餐

     

概要

     

npm start [-- <args>]

     

描述

     

这会运行包“start”中指定的任意命令   “scripts”对象的属性。如果未指定“start”属性   在“scripts”对象上,它将运行node server.js

总之,运行npm start可以执行以下两项操作之一:

  1. npm start {command_name}:运行任意命令(即,如果在package.json的start对象的scripts属性中指定了此类命令)
  2. npm start:否则,如果不存在start属性(或者没有传递command_name):运行node server.js,(可能不适合,例如OP没有server.js; OP运行node app.js
  3. 我说我只会列出2个项目,但还有其他可能性(即错误情况)。例如,如果您运行package.json的目录中没有npm start,则可能会显示错误:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'