如何控制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.json
中scripts.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" } ...