195

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

npm start

到目前为止,我使用过:

node app.js

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

4

2 回答 2

279

手册页,npm start:

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

诚然,这种描述完全没有帮助,仅此而已。至少它比 socket.io 有更多的文档记录。

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

“脚本”:{“开始”:“咖啡 server.coffee”}

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

节点服务器.js

 

于 2012-07-30T06:57:05.663 回答
11

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

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

npm-开始

开始一个包

概要

npm start [-- <args>]

描述

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

总之,跑步npm start可以做以下两件事之一:

  1. npm start {command_name}:运行任意命令(即如果在startpackage.jsonscripts对象的属性中指定了这样的命令)
  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'
于 2017-05-06T19:36:11.243 回答