javascript - npm start 没有获取更新的 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。我尝试了npm cache verify
, npm cache clear --force
, rm -rf node_modules
, rm package-lock.json
,npm install
又一次,但问题似乎并没有消失。我什至删除了package.json并重新定义了它,但是start
我调用时的值npm start
仍然是陈旧的。
这是我的 shell 的输出:
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
将根据包内容默认一些脚本值。
如果你的包根目录中有 server.js 文件,那么 npm 将默认启动命令为
node server.js
.
看这里:
所以你start
里面的字段package.json
实际上并没有做任何事情,因为它不在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"
}
}
推荐阅读
- android - 使用 Hive 保存在本地设备上的数据可以通过移动设备的备份移动到另一台设备吗?(Flutter)
- material-ui - 将 mui5 主题改回默认(紫色)v4 主题
- javascript - Angular2中给出动态id方法的区别
- r - 如果另一列中的值在 R 中重复,如何替换列中的不同值?
- jasper-reports - 当我做 Jasper 报告时,我的服务器中的字符错误
- react-native - 无法加载脚本。确保您正在运行 Metro 服务器反应本机
- sparql - 如何通过 SPARQL 仅知道 Protégé 中的个人和类名来检索数据属性值?
- typescript - NextJS:在服务器上运行 Typescript 脚本
- mvvm - 最佳实践:当流中存在不同错误类型时,Combine Framework 中的错误管理
- python - 熊猫使用合并单元格创建字典