[英]“ 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.