Javascript npm启动vs节点app.js

Javascript npm启动vs节点app.js,javascript,node.js,express,npm,Javascript,Node.js,Express,Npm,我对Node非常陌生,正在尝试了解应用程序的基本知识。我很好奇为什么这两个命令: node app.js --vs-- npm启动 将相同的内容输出到控制台,并显示为继续“侦听”,但为什么当我尝试访问时,只有在运行第一个命令时才会得到404 我看到Express4似乎有一个不同的应用程序结构,但为什么一个成功地侦听,而另一个没有,尽管控制台中的行为相同 任何解释都是有帮助的。谢谢 这两个命令不一定相同npm start运行“start”脚本配置所说的任何内容,以按照“package.json”中

我对Node非常陌生,正在尝试了解应用程序的基本知识。我很好奇为什么这两个命令:

node app.js

--vs--

npm启动

将相同的内容输出到控制台,并显示为继续“侦听”,但为什么当我尝试访问时,只有在运行第一个命令时才会得到404

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


任何解释都是有帮助的。谢谢

这两个命令不一定相同
npm start
运行“start”脚本配置所说的任何内容,以按照“package.json”中的定义运行,
node app.js
执行“node”中的“app.js”文件。有关更多信息,请参阅。因此,如果您有以下package.json,那么命令就完全不同了

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node index.js"
    }
    ....
}
下面的package.json是您希望使它们完全相同的内容

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node app.js"
    }
    ....
}
首先,我要检查“start”脚本设置为运行什么,并尝试直接在CLI中运行相同的命令,而不是通过NPM来查看差异所在

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


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

除了上述回答,我还想补充一点:

执行
npm start
操作时,您的
包中没有
脚本部分。json
将导致
npm
在该目录中查找
server.js
,如果找到,请使用
node server.js
运行它,否则它将抛出
npm ERR!缺少脚本:作为错误消息启动


文档:

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

首先

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

NPM是软件包管理器,它可以用来下载/更新/运行软件包,还有更多,由3部分组成

  • 网站
  • npm CLI
  • 登记处
  • 阅读,看看它为你做了什么

    node any.js-这将只运行javascript文件“any,js”。所以,若那个里并没有启动服务器的代码,你们会得到错误

    npm start-将运行package.json中的start命令。下面是package.json中的开始脚本,这是一个非常基本的示例

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

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


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

    npm start
    查看package.json中的
    start
    脚本。它可能与app.js的脚本不同。试着查看package.json。你能发布你的app.js和你的package.json的相关部分吗?知道什么,你是对的。我终于明白了,我有点迷失了方向,因为我来自一个过度使用grunt的FE自动化世界。基本上,./bin/www文件现在是服务器的引导程序,而在旧版本的express中则不是这样。谢谢你帮我理解。基本上,我知道app.js并没有完全引导应用程序,但它在做mongodb连接之类的事情,这就是为什么我会看到我的控制台日志。新的express规范使用./bin/www来执行所有的引导(我喜欢,它看起来更干净)+谢谢你@dudewad是与“main”字段不同的任何形式的“开始脚本”。因为根据npm文档,它们似乎都实现了相同的目标……我不确定主字段的功能。我学到的是package.json的“scripts”部分是在键入“npm run[somescript]”时搜索的部分。我认为本例中的start是一个别名。如果
    any.js
    中没有启动服务器的代码,则不会出现错误。Node是一个Javascript解释器,所以只要在该脚本中输入的JS有效,就不会出现错误。相反,你将得到它产生的任何输出。在
    any.js
    的情况下,如果它为空,则不会得到任何输出。这是一个非常重要的区别。我觉得您将Javascript框架/库与Node.js混为一谈,它们是两个完全不同的东西。节点运行javascript代码,React是一个用javascript编写内容的库。对于寻找信息的人来说,这是一个重要的区别。