簡體   English   中英

npm 開始不拾取更新的 package.json

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM