完全相同的 package.json 文件适用于空的全新项目,但不适用于旧项目

Posted

技术标签:

【中文标题】完全相同的 package.json 文件适用于空的全新项目,但不适用于旧项目【英文标题】:Same exact package.json file works in empty brand new project but doesn't in old project 【发布时间】:2021-11-25 17:40:19 【问题描述】:

我在尝试升级到 Angular 8 时收到此错误。

npm WARN 旧锁文件

npm WARN old lockfile package-lock.json 文件是用 旧版本的 npm,

npm WARN 旧锁文件,因此必须从中获取补充元数据 注册表。

npm WARN 旧锁文件

npm WARN old lockfile 这是一次性修复,请耐心等待...

npm WARN 旧锁文件

npm 错误!代码 ERESOLVE

npm 错误! ERESOLVE 无法解决

npm 错误!

npm 错误!解析时:comprehensivedashboard@0.0.0

npm 错误!找到:@angular/animations@7.2.6

npm 错误! node_modules/@angular/动画

npm 错误! @angular/animations@"~8.2.14" 来自根项目

npm 错误!对等 @angular/animations@">=7.0.0" 来自 @angular/material@7.3.3

npm 错误! node_modules/@angular/material

npm 错误! @angular/material@"~8.2.3" 来自根项目

npm 错误!

npm 错误!无法解析依赖:

npm 错误! @angular/animations@"~8.2.14" 来自根项目

npm 错误!

npm 错误!冲突的对等依赖:@angular/core@8.2.14

npm 错误! node_modules/@angular/core

npm 错误!对等 @angular/core@"8.2.14" 来自 @angular/animations@8.2.14

npm 错误! node_modules/@angular/动画

npm 错误! @angular/animations@"~8.2.14" 来自根项目

npm 错误!

npm 错误!修复上游依赖冲突,或者重试

npm 错误!此命令带有--force 或--legacy-peer-deps

npm 错误!接受一个不正确的(并且可能被破坏的)依赖 分辨率。

npm 错误!

npm 错误!看 C:\Users\vakkinen\AppData\Local\npm-cache\eresolve-report.txt 完整报告。

npm 错误!可以在以下位置找到此运行的完整日志:

npm 错误! C:\Users\vakkinen\AppData\Local\npm-cache_logs\2021-10-05T12_19_50_257Z-debug.log

于是决定创建一个全新的 Angular8 应用程序,看看 package.json 文件长什么样。该文件附在下面。然后我一次一个地将我需要的所有包添加到这个全新的空项目中。应用程序构建成功,我能够运行该应用程序。所以我将所有依赖项和devDependencies复制并粘贴到旧项目package.json中。由于上述相同的错误,该项目仍然失败npm i。所以我尝试将 repo 克隆到一个新目录中,并将 package.json 的内容替换为全新的空项目中的 package.json 的内容,仍然是同样的错误。我做错了什么?


  "name": "dashboard",
  "version": "0.0.0",
  "scripts": 
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  ,
  "private": true,
  "dependencies": 
    "@angular/animations": "~8.2.14",
    "@angular/cdk": "8.2.3",
    "@angular/common": "~8.2.14",
    "@angular/compiler": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/forms": "~8.2.14",
    "@angular/material": "~8.2.3",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "@ng-bootstrap/ng-bootstrap": "^5.3.0",
    "bootstrap": "^4.3.1",
    "core-js": "^2.5.4",
    "@swimlane/ngx-charts": "^11.0.0",
    "fusioncharts": "^3.15.0-sr.1",
    "hammerjs": "^2.0.8",
    "moment": "^2.24.0",
    "ngx-bootstrap": "^3.2.0",
    "ngx-csv": "^0.3.1",
    "ngx-export-as": "1.4.2",
    "ngx-scrollbar": "^4.1.1",
    "ngx-select-dropdown": "^1.0.1",
    "node-sass": "^4.14.0",
    "rxjs": "~6.4.0",
    "sass-loader": "^8.0.2",
    "tslib": "^1.10.0",
    "zone.js": "~0.9.1"
  ,
  "devDependencies": 
    "@angular-devkit/build-angular": "~0.13.0",    
    "@angular/cli": "~8.3.29",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.7.0",
    "protractor": "~7.0.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.5.3"
  

【问题讨论】:

尝试删除 package-lock.json 并重新运行命令 【参考方案1】:

解决此问题的步骤:

    删除node_modules文件夹。 删除package-lock.json。 运行npm i --force

【讨论】:

【参考方案2】:

问题源于node_modules 目录和package-lock.json 中的文件不正确。

最可能最简单的解决方案是删除node_modules 目录和package-lock.json,然后根据您的@987654328 运行npm install 以获得干净的node_modules 目录和新的package-lock.json @

我建议在这里阅读更多关于 package-lock.json 文件的内容:https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8

【讨论】:

【参考方案3】:

错误消息警告您 package-lock.json 文件是问题所在。只需删除它,就会生成一个新的。

【讨论】:

【参考方案4】:

在包文件所在的文件夹中应该有一个名为 package-lock 的文件。删除它,错误应该消失。 package-lock 文件包含您的依赖项及其版本的所有依赖项。删除它不会影响您的项目,因为它是在 npm install 上重新生成的。

【讨论】:

以上是关于完全相同的 package.json 文件适用于空的全新项目,但不适用于旧项目的主要内容,如果未能解决你的问题,请参考以下文章

package-lock.json 在 npm install 之后被重写

在 package.json 中相同依赖项的 2 个版本之间切换的好方法?

package.json 与 package-lock.json 的区别

你真的了解package.json吗?

package-lock.json和package.json区别

将相同的参数传递给 package.json 中多个脚本的节点