众所周知,package.json是一个管理项目的配置的核心文件,但或许很多人并没有切实体会到它是怎么工作的,我们又能借助它解决哪些问题。
如果你配置项目,环境总报错,那么你可以这样来排查:
1.看报错提示
从头开始看报错提示,并努力看懂,不行的话复制给ai
从头看是因为,后面的报错提示一般都不准确,因为第一步错了,后面会步步错,系统的提示自然也就不准确了。
2.Node版本与项目不匹配
-
报错关键词:
Node.js version mismatch、Unsupported engine、Command failed。 -
查看package.json的engine字段
"engines": { "node": ">=18.0.0", "npm": ">=9.0.0" }然后按照需求切换node版本,如果没有这个字段,就去你要使用的项目的官方文档看看,如果对Node版本有要求的话,会明确说明的。
-
切换Node版本,使用nvm最方便,如果你没有使用nvm,那么可以移步我的另一篇笔记,记录了如何下载、使用nvm 如何正确配置前端环境
3.缺少包或包版本错误
缺少包的话就要去下载这个包,那么在此之前可以看一看项目对该包的版本要求,包版本错误的话也是和以下同样的流程:
需要看package.json文件,看到dependencies字段,这里记录了该项目的所需依赖以及对应的版本号,然后去node_modules文件夹下查找对应的包,点开,找到这个包的package.json文件,查看这个包的版本,如果二者不一样的话,说明你下载的包版本错误,删了,重新下载
"dependencies": {
"@angular/animations": "~12.2.0",
"@angular/common": "~12.2.0",
"@angular/compiler": "~12.2.0",
"@angular/core": "~12.2.0",
"@angular/forms": "~12.2.0",
"@angular/platform-browser": "~12.2.0",
"@angular/platform-browser-dynamic": "~12.2.0",
"@angular/router": "~12.2.0",
"@types/marked": "^4.3.0",
"@worktile/planet": "^12.1.2",
"cc-water-marker": "0.0.2",
"marked": "^4.3.0",
"rxjs": "~6.6.0",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
},
npm i <包名称>@<版本号> //下载指定版本的包
补充:^开头的版本号,说明在我们直接执行npm i时,下载的包版本可能会自动下载该主版本下的最新版,即^12.2.0,可能下载的是12.3.0,12.8.0…,但不会下载13开头的版本,那么下载的包版本不匹配可能就是这个原因,该项目只能匹配12.2.0版本,但你下载的是12.8.0或其他
~开头的版本号,仅允许补丁更新,即~0.11.4,自动下载时的范围是<=0.11.4<0.12.0
无前缀是严格固定版本
*开头表示下载最新版本,但一般不支持这样做哦
提示:执行npm i时,会自动下载该项目的package.json里面dependencies和devDependencies包
以上是我在配置一个项目时总是报错后,使用的解决方法,我这才正真意识到package.jsn的作用

被折叠的 条评论
为什么被折叠?



