【问题标题】:Difference between `npm start` & `node app.js`, when starting app?启动应用程序时`npm start`和`node app.js`之间的区别?
【发布时间】:2012-07-27 19:42:35
【问题描述】:

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

npm start

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

node app.js

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

【问题讨论】:

    标签: node.js express npm


    【解决方案1】:

    从man page,npm 开始:

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

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

    无论如何,真正发生的是 npm 会查看您的 package.json 文件,如果您有类似的东西

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

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

    节点服务器.js

     

    【讨论】:

    • 啊,我明白了。所以它本质上是一样的,除非你选择在编译时运行更多的脚本。
    • 如果你通常输入“node server.js”,那么是的。
    • 我创建了一个新应用程序,npm start 不起作用。对于旧应用程序,它运行良好。有什么建议吗?
    • 例如“node app.js”不会获取路由器更改,而“npm start”会,因为它执行 package.json 启动脚本(如“node ./bin/www”)
    • 如果您以“npm”开头,它可以通过在控制台上输入“rs”来重新启动应用程序。
    【解决方案2】:

    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 的 scripts 对象的 start 属性中指定)
    2. npm start:否则,如果不存在 start 属性(或未传递 command_name):运行 node server.js,(可能不合适,例如 OP 没有 @ 987654337@;OP 运行 nodeapp.js )
    3. 我说过我只会列出 2 项,但还有其他可能性(即错误情况)。例如,如果您运行npm start 的目录中没有package.json,您可能会看到错误:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 2015-12-22
      • 2023-04-03
      • 1970-01-01
      • 2018-12-23
      • 2019-03-27
      • 2019-09-29
      • 2019-08-16
      • 1970-01-01
      相关资源
      最近更新 更多