【发布时间】:2012-07-27 19:42:35
【问题描述】:
我已经使用命令express new 'filename' 安装了一个应用程序。我刚刚了解到您可以使用以下方式启动应用程序:
npm start
到目前为止我已经使用过:
node app.js
启动我的服务器。有谁知道这两者有什么区别吗?谢谢。
【问题讨论】:
我已经使用命令express new 'filename' 安装了一个应用程序。我刚刚了解到您可以使用以下方式启动应用程序:
npm start
到目前为止我已经使用过:
node app.js
启动我的服务器。有谁知道这两者有什么区别吗?谢谢。
【问题讨论】:
从man page,npm 开始:
运行包的“启动”脚本,如果提供的话。 如果未指定版本,则启动“活动”版本。
诚然,这种描述完全没有帮助,仅此而已。至少它比 socket.io 有更多的文档记录。
无论如何,真正发生的是 npm 会查看您的 package.json 文件,如果您有类似的东西
"scripts": { "start": "coffee server.coffee" }
然后它会这样做。如果 npm 找不到您的启动脚本,则默认为:
节点服务器.js
【讨论】:
documentation has been updated。我的答案与接受的答案相比有很大的变化:我想反映文档是最新的,而接受的答案有一些断开的链接。
另外,当接受的答案说“它默认为node server.js”时,我不明白。我认为文档阐明了默认行为:
npm-开始
开始一个包
概要
npm start [-- <args>]说明
这将运行包的“
start”中指定的任意命令 其“scripts”对象的属性。如果未指定“start”属性 在“scripts”对象上,它将运行node server.js。
总之,运行npm start 可以做以下两件事之一:
npm start {command_name}:运行任意命令(即如果该命令在 package.json 的 scripts 对象的 start 属性中指定)npm start:否则,如果不存在 start 属性(或未传递 command_name):运行 node server.js,(可能不合适,例如 OP 没有 @ 987654337@;OP 运行 nodeapp.js )npm start 的目录中没有package.json,您可能会看到错误:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
【讨论】: