启动应用程序时,"npm start"和"node app.js"之间的区别?

Ren*_*AED 182 node.js npm express

我已经使用该命令安装了一个应用程序express new 'filename'.我刚刚了解到您可以使用以下命令启动应用程序:

npm start
Run Code Online (Sandbox Code Playgroud)

到目前为止我用过:

node app.js
Run Code Online (Sandbox Code Playgroud)

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

Yus*_*f X 257

手册页开始,npm开始:

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

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

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

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

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

node server.js

 

  • 啊,我明白了.因此,除非您选择在编译时运行更多脚本,否则它基本上是相同的. (4认同)

The*_*Pea 9

文档已被更新.我的答案与接受的答案有很大的变化:我想反映文档是最新的,并且接受的答案有一些断开的链接.

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

NPM启动

开始一个包

概要

npm start [-- <args>]

描述

这将运行start其" scripts"对象的包的" "属性中指定的任意命令.如果start在" scripts"对象上没有指定" "属性,它将运行node server.js.

总之,运行npm start可以做以下两件事之一:

  1. npm start {command_name}:运行任意命令(即,如果在startpackage.json的scripts对象的属性中指定了此类命令)
  2. npm start:否则,如果没有start属性(或没有command_name通过):运行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'

  • 下降投票者愿意解释吗? (2认同)