如何控制NPM在哪里findserver.js?

我正在关注这个博客,并在第4节中介绍了如何执行和运行一个应用程序。 它的工作如上所述。

现在,我想把文件server.js ,这是入口点在一个名为应用程序的目录。 不过,命令npm start不会再find它了。

一些谷歌search后,我已经读了,我应该把package.json ,我做了以下行。

“开始”:“app / server.js”,

问题是,它仍然无法find它,我不能真正诊断问题。 是因为入口点必须在根? 开始元素是否需要在JSON文件中以特定顺序放置? 我指定的path不正确(我试过“\”和“/”等)?

您错过了对节点的调用:

"start": "node app/server.js", 

还要确保将上面的行放在package.json"scripts"部分。

 "scripts": { "start": "node app/server.js", ... }, 

package.jsonscripts.start的值被指定为每当执行npm start时都会运行的命令。 这意味着,无论你放在那里的任何值都将作为一个可执行文件直接运行,所以这不仅仅是一个指定path的问题。

你现在有两个select来解决你的问题:

  • 指定一个完整的命令: node app/server.js
  • 使app/server.js可执行文件:设置其可执行位( chmod +x app/server.js )并将hashbang行添加到文件( #!/usr/bin/env node作为文件的第一行)

package.json脚本部分的'start'键描述了执行'npm start'时由npm运行的脚本。

 ... "scripts": { "start": "node app/server.js" } ... 

但是,有些服务器可能会select以其他可能的方式启动应用程序。 将main文件定义为应用程序的起点也是有意义的。 这可以如下完成:

 ... "main": "app/server.js", "scripts": { "start": "node app/server.js" } ...