[英]“ npm ERR! missing script: start” at Heroku despite set up in package.json and Procfile
[英]npm start not picking up updated package.json
我正在从头开始编写一个节点应用程序,使用以下package.json ,这是非常样板。
{
"name": "myfirstnodeproject",
"version": "1.0.1",
"description": "Learning node",
"main": "index.js",
"start": "node server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"license": "ISC",
"dependencies": {
"request": "^2.88.2"
}
}
我创建server.js看起来像这样:
var http = require("http");
http.createServer((inRequest, inResponse) => {
inResponse.end("Your IP Address is " + inRequest.connection.remoteAddress);
}).listen(9000);
当我使用npm start
应用程序时,它运行良好。
然后,我创建了一个名为server_time.js的新文件:
require("http").createServer((inRequest, inResponse) => {
const requestModule = require("request");
requestModule(
"http://worldtimeapi.org/api/timezone/America/New_York",
function (inErr, inResp, inBody) {
inResponse.end(
`Hello from my first Node Web server: ${inBody}`
);
}
);
}).listen(9000);
我在package.json中更改了以下行:
"start": "node server_time.js",
然而,Node 似乎仍然选择了server.js 。 I tried npm cache verify
, npm cache clear --force
, rm -rf node_modules
, rm package-lock.json
, and npm install
again, but the problem didn't seem to go away. 我什至删除了 package.json并重新定义了它,但是当我调用npm start
start
start 的值仍然过时。
这是来自我的 shell 的 output:
GsMacbookPro:MyFirstNodeProject g$ cat package.json
{
"name": "myfirstnodeproject",
"version": "1.0.1",
"description": "Learning node",
"main": "index.js",
"start": "node server_time.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "G",
"license": "ISC",
"dependencies": {
"request": "^2.88.2"
}
}
GsMacbookPro:MyFirstNodeProject g$ ls
node_modules package-lock.json package.json server.js server_time.js
GsMacbookPro:MyFirstNodeProject g$ npm start
> myfirstnodeproject@1.0.1 start /Users/g/Repos/MyFirstNodeProject
> node server.js
在有人问之前,node 版本是v10.16.3 ,npm 版本是6.9.0 。
npm start
当前对您有效的原因是因为npm
将根据 package 内容默认一些脚本值。
如果 package 的根目录中有 server.js 文件,则 npm 将默认启动命令为
node server.js
。
看这里:
因此,您在package.json
中的start
字段实际上并没有做任何事情,因为它不在scripts
下,这是它应该属于的地方。
正确的方法是更新您的package.json
使其如下所示:
{
"name": "myfirstnodeproject",
"version": "1.0.1",
"description": "Learning node",
"main": "index.js",
"scripts": {
"start": "node server_time.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "G",
"license": "ISC",
"dependencies": {
"request": "^2.88.2"
}
}
尝试:
{
"name": "myfirstnodeproject",
"version": "1.0.1",
"description": "Learning node",
"main": "server_time.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server_time.js"
},
"license": "ISC",
"dependencies": {
"request": "^2.88.2"
}
}
然后npm run start
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.