npm start vs node app.js

dud*_*wad 49 javascript node.js npm express

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

节点app.js

--vs--

npm开始

输出相同的东西到控制台,似乎继续"监听",但为什么当我尝试访问http:// localhost:3000时,我只在运行第一个命令时得到404.

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

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

and*_*y88 46

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

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node index.js"
    }
    ....
}
Run Code Online (Sandbox Code Playgroud)

以下package.json是你想要使它们相同的东西.

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node app.js"
    }
    ....
}
Run Code Online (Sandbox Code Playgroud)

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

但为什么一个人成功地倾听而另一个人没有

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

  • 知道什么,你是对的.我终于明白了,我有点迷失方向,因为我来自FE自动化世界,过度使用咕噜声.基本上,./ bin/www文件现在是服务器的引导程序,在旧版本的快递中并非如此.谢谢你帮我理解.基本上我了解app.js并没有完全引导应用程序,但它正在做像mongodb连接这样的事情,这就是我看到我的控制台日志的原因.新的快递规范是使用./bin/www来执行所有引导(我喜欢它;它看起来更干净).+1谢谢!! (3认同)

Bla*_*ard 9

除了以上答案,我还想补充一点:

这样做npm start,而不必scripts在你的部分package.json会导致npm寻求server.js在该目录中,如果发现来看,它采用node server.js否则它会抛出npm ERR! missing script: start的错误消息.

  • 完美地完成了。我正在找这个! (2认同)

Pra*_*eep 7

我还想补充一些东西,可能会对未来的观众有所帮助

首先

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

NPM 是包管理器,可用于下载/更新/运行包等等,由 3 项组成

  1. 网站
  2. 命令行界面
  3. 登记处

阅读此处了解它为您所做的一切。

node any.js - 这将简单地运行 javascript 文件“any,js”。所以如果那里没有启动服务器的代码,你会得到错误

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

在此处输入图片说明

它只会在控制台上打印“Hello”。

如果您使用 CRA 创建 React 应用程序,您通常会在本节中有“ react-scripts start ”。设置开发环境并启动服务器,以及热模块重新加载

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