启动应用程序时,“ NPM start ”和“ node app.JS ”之间的区别?

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

npm start

到目前为止,我使用了:

node app.js

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

128728 次浏览

手册页开始,NPM启动:

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

诚然,这种描述完全没有帮助,这就是它所说的全部。至少它比Socket.io有更多的文档。

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

“脚本”:{“开始”:“咖啡服务器.咖啡”}

那么它就会这样做。如果NPM找不到启动脚本,则默认为:

节点server.JS

 ;

文档已更新。我的答案与公认的答案相比有实质性的变化:我想反映文档是最新的,而公认的答案有几个坏掉的链接。

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

NPM-开始

启动一个包

剧情简介

npm start [-- <args>]

描述

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

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

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