npm start vs node app.js

时间:2015-07-11 21:28:01

标签: javascript node.js express npm

我对Node非常陌生,并试图了解应用基础知识。我很好奇为什么这两个命令:

  

节点app.js

- VS -

  

npm start

向控制台输出相同的内容并且似乎继续“监听”,但为什么当我尝试访问http://localhost:3000时,我只在运行第一个命令时获得404。

我看到Express 4似乎有不同的应用程序结构,但为什么一个成功侦听而另一个没有,尽管在控制台中有相同的行为?

任何解释都有帮助。谢谢!

3 个答案:

答案 0 :(得分:40)

这两个命令不一定相同。 npm start运行任何'start'脚本配置说要按'package.json'中的定义运行,node app.js执行'node'中的'app.js'文件。有关详细信息,请参阅http://browsenpm.org/package.json。因此,如果你有以下package.json,那么命令就完全不同了。

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node index.js"
    }
    ....
}

以下package.json是你想让它们完全相同的东西。

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node app.js"
    }
    ....
}

我首先检查“启动”脚本设置为运行的内容,然后尝试直接在CLI中运行相同的命令,而不是通过NPM查看差异的位置。

  

但是为什么一个成功地听,而另一个没有

如果服务器返回404,则表示服务器正在侦听,但文档根目录或访问权限未正确设置,因此返回“未找到文件”响应。

答案 1 :(得分:8)

除了上面的答案外,我想补充一点:

在您的npm start中没有scripts部分的情况下执行package.json会导致 npm 在该目录中寻找server.js,如果找到,则使用node server.js运行它,否则它将抛出 npm ERR! missing script: start 作为错误消息。

答案 2 :(得分:1)

我想补充的内容可能对将来的受众有所帮助

首先

节点-是任何JavaScript代码的运行时间

NPM是软件包管理器,可用于下载/更新/运行软件包以及更多内容,由3项组成

  1. 网站
  2. npm CLI
  3. 注册表

阅读here,了解它为您所做的一切。

节点any.js -这将仅运行javascript文件“ any,js”。因此,如果那里没有启动服务器的代码,则会出现错误

npm start -将在package.json中运行启动命令。对于非常基本的示例,如果下面是package.json

中的启动脚本,

enter image description here

它将仅在控制台上打印“ Hello”。

如果您使用CRA创建react应用,则通常在此部分中显示“ react-scripts start ”。设置开发环境并启动服务器以及热模块重新加载

这就是您在这种情况下不会出错的原因