繁体   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