属性“@angular/animations”"/>
npm ci 命令失败,无法读取未定义的属性“@angular/animations”
在为我的 Angular 项目执行 docker build 时,在 npm ci 步骤中,出现以下错误:
Cannot read property '@angular/animations' of undefined
由于没有正确的错误,我们无法找到解决方案。
包和节点的版本:
- @angular/动画 - 15.2.9
- Node.Js - 18.14.2
- NPM - 9.5
- 角度 CLI - 15.2.8
到目前为止我尝试过的:
- 交叉检查 Animations 模块的 package.json 文件
- 尝试降级@angular/animations 版本
- 删除 package-lock.json 文件和 node_module 目录
- 删除缓存并尝试
Docker文件:
FROM docker-images.artifactory.dummydomain/db/node:14.18-alpine as build
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install -g @angular/[email protected]
RUN npm ci
RUN ng build --configuration=test
USER node
COPY --chown=node:node . .
Package.json 文件依赖:
"@angular/animations": "^15.2.9",
"@angular/cdk": "^15.2.9",
"@angular/common": "^15.2.9",
"@angular/compiler": "^15.2.9",
"@angular/core": "^15.2.9",
"@angular/forms": "^15.2.9",
"@angular/localize": "^15.2.9",
"@angular/material": "^15.2.9",
"@angular/material-moment-adapter": "^15.2.9",
"@angular/platform-browser": "^15.2.9",
"@angular/platform-browser-dynamic": "^15.2.9",
"@angular/router": "^15.2.9",
"angular-in-memory-web-api": "^0.9.0",
"core-js": "^3.6.2",
"export-from-json": "^1.7.0",
"hammerjs": "^2.0.8",
"material-design-icons-iconfont": "^6.7.0",
"moment": "^2.24.0",
"ng-uikit-pro-standard": "^1.0.0",
"ngx-spinner": "^15.0.1",
"rxjs": "~6.6.7",
"socket.io-client": "^4.5.4",
"sweetalert2": "^11.6.9",
"tslib": "^2.0.0",
"vkbeautify": "^0.99.3",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^15.2.8",
"@angular/cli": "^15.2.8",
"@angular/compiler-cli": "^15.2.9",
"@angular/language-service": "^15.2.9",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"codelyzer": "^6.0.0",
"jasmine-core": "~3.8.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~6.4.2",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0",
"protractor": "~7.0.0",
"ts-node": "~7.0.0",
"tslint": "~6.1.0",
"typescript": "~4.9.5"
}
有人帮忙就好了。 TIA!
回答如下:如果 npm 尝试处理它无法理解的锁定文件(错误消息根本没有帮助),则会发生此错误。 lockfile的格式是随时间变化的,npm在lockfile中用
lockfileVersion
参数标记当前版本:
- 未提供版本:来自 npm v5 之前的 npm 版本的“古老的”shrinkwrap 文件。
- 1:npm v5 和 v6 使用的 lockfile 版本。
- 2:npm v7 和 v8 使用的 lockfile 版本。向后兼容 v1 锁文件。
- 3:npm v9使用的lockfile版本。向后兼容 npm v7.
您正在使用 v14.18 作为基础映像,它随 npm v6 一起提供。在你的系统中你有 npm v9,所以
lockfileVersion
是 3。正如你在上面的列表中看到的,这种格式与 npm v6 不兼容。
推荐的修复方法是将 Node 基础映像的版本更新为 v16 (npm 8) 或 v18 (npm 9)。或者,您可以使用 npm v8 执行
npm install
,然后提交并推送生成的锁定文件。
更多推荐
npm ci 命令失败,无法读取未定义的属性“@angular/animations”
发布评论