12

我刚刚从 Angular 8.2 更新到 9。

如果我禁用常春藤,一切都会很好,但是当它启用时,我会遇到很多似乎有点模糊的错误,至少我在谷歌搜索时找不到任何结果。

我很确定我已经完成了更新所需的一切,即将延迟加载更改为使用动态导入和固定 Angular Material 导入路径等。

我还将在此处包含我的package.json依赖项

  "dependencies": {
    "@angular/animations": "^9.0.0",
    "@angular/cdk": "^9.0.0",
    "@angular/common": "^9.0.0",
    "@angular/compiler": "^9.0.0",
    "@angular/core": "^9.0.0",
    "@angular/fire": "^5.4.2",
    "@angular/flex-layout": "^9.0.0-beta.29",
    "@angular/forms": "^9.0.0",
    "@angular/http": "^7.2.15",
    "@angular/material": "^9.0.0",
    "@angular/material-moment-adapter": "^8.2.2",
    "@angular/platform-browser": "^9.0.0",
    "@angular/platform-browser-dynamic": "^9.0.0",
    "@angular/platform-server": "^9.0.0",
    "@angular/router": "^9.0.0",
    "@ngrx/effects": "^8.3.0",
    "@ngrx/entity": "^8.3.0",
    "@ngrx/router-store": "^8.3.0",
    "@ngrx/store": "^8.3.0",
    "@zxing/ngx-scanner": "^2.0.1",
    "angular-resizable-element": "^3.2.4",
    "angular-resize-event": "^1.1.1",
    "angular2-highcharts": "^0.5.5",
    "core-js": "^3.6.4",
    "detect-browser": "^4.7.0",
    "firebase": "^7.8.0",
    "google-polyline": "^1.0.3",
    "hammerjs": "^2.0.8",
    "highcharts": "^8.0.0",
    "i18n-iso-countries": "^4.3.1",
    "leaflet": "^1.5.1",
    "mapbox-gl": "^1.4.0",
    "moment": "^2.24.0",
    "moment-timezone": "^0.5.26",
    "ng-pick-datetime": "^6.0.7",
    "ngrx-store-freeze": "^0.2.3",
    "ngx-cacheable": "^1.3.2",
    "ngx-cookie-service": "^2.2.0",
    "ngx-csv": "^0.3.1",
    "ngx-file-drop": "^8.0.8",
    "ngx-infinite-scroll": "^0.8.4",
    "papaparse": "^5.0.2",
    "request": "^2.87.0",
    "request-promise": "^4.2.2",
    "rxjs": "^6.5.4",
    "rxjs-compat": "^6.3.3",
    "typescript-string-operations": "^1.3.1",
    "web-animations-js": "^2.3.2",
    "zone.js": "^0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.900.1",
    "@angular/cli": "^9.0.0",
    "@angular/compiler-cli": "^9.0.0",
    "@angular/language-service": "^9.0.0",
    "@ngrx/store-devtools": "^8.3.0",
    "@types/body-parser": "^1.17.0",
    "@types/cors": "^2.8.4",
    "@types/detect-browser": "^4.0.0",
    "@types/express": "^4.11.1",
    "@types/firebase": "^3.2.1",
    "@types/helmet": "0.0.37",
    "@types/jasmine": "^3.5.4",
    "@types/jasminewd2": "~2.0.3",
    "@types/leaflet": "^1.2.7",
    "@types/lodash": "^4.14.109",
    "@types/node": "^13.7.1",
    "@types/request": "^2.47.0",
    "@types/request-promise": "^4.1.41",
    "codelyzer": "^5.2.1",
    "concurrently": "^3.5.1",
    "del-cli": "^1.1.0",
    "jasmine-core": "^3.5.0",
    "jasmine-spec-reporter": "^4.2.1",
    "karma": "^4.4.1",
    "karma-chrome-launcher": "^3.1.0",
    "karma-cli": "^2.0.0",
    "karma-coverage-istanbul-reporter": "~1.4.2",
    "karma-jasmine": "^3.1.1",
    "karma-jasmine-html-reporter": "^1.5.2",
    "protractor": "^5.4.3",
    "puppeteer": "^2.0.0",
    "rxjs-tslint": "^0.1.7",
    "ts-node": "~5.0.1",
    "tslint": "^6.0.0",
    "typescript": "3.6.4",
    "webpack": "^4.41.6"
  },
  "peerDependencies": {
    "typescript": "3.6.4",
    "tslib": "1.10.0"
  },

我得到的错误本身是:

在此处输入图像描述

我已经清除了我的node_modulespackage-lock.json并再次运行npm install

编辑:也许同样重要的是要注意它正在编译和运行,ng serve但是当我尝试构建它或使用 AOT 运行时,ng serve -aot我得到了错误。

4

5 回答 5

4

我今天遇到了同样的问题,这就是我在我的场景中解决它的方法。

可能与您无关,但错误完全相同,因此在此处记录。

我使用的是 Linux,如果您对项目文件夹没有足够的权限,则会出现此错误。

sudo chmod -R 777 <folder>

一旦我提供了足够的权限,一切都很顺利并且运行良好。

这是我得到的错误的屏幕截图:

在此处输入图像描述

于 2020-06-21T18:09:34.570 回答
4

我通过删除 node_modules 文件夹解决了这个问题,然后运行npm install​​.

于 2020-05-14T20:21:52.420 回答
1

在我的 Angular 项目 (ng-version="10.1.6") 中安装ngx-print( https://www.npmjs.com/package/ngx-print )后出现以下错误-

: 编译成功。

node_modules/ngx-print/lib/ngx-print.module.d.ts:1:22 中的错误 - 错误 NG6002:出现在 AppModule 的 NgModule.imports 中,但无法解析为 NgModule 类。

这可能意味着声明 NgxPrintModule 的库(ngx-print)没有被 ngcc 正确处理,或者与 Angular Ivy 不兼容。检查是否有更新版本的库可用,如果有则更新。还可以考虑与图书馆的作者核实,看看图书馆是否应该与 Ivy 兼容。

1 出口声明类 NgxPrintModule {

解决方案 -node_modules我通过删除文件夹 来解决此问题,package-lock.json然后运行npm install​​.

于 2020-10-25T08:43:38.230 回答
0

我已经通过在项目的根目录上执行这个命令来修复这个问题:

npx ngcc && ngcc -s dist
于 2020-02-19T11:20:21.460 回答
0

我一直在寻找这个问题的答案,因为我对寻找没有帮助的答案感到沮丧,而我在互联网上放弃了我试图查看构建(库)的 dist 文件夹以及发生了什么变化,首先要注意的是添加了 ive_ngcc_ 文件夹,这意味着即使我在我的库项目中设置了 enable ivy : false ,它仍在将构建处理为 ivy 而不是常规。有时它发生在 Angular 版本 9 中

修复步骤:

  1. 删除节点模块文件夹(库项目)在 Windows 上使用的命令( rm .\node_modules)
  2. 删除现有的 dist 文件夹使用的命令 (rm .\dist)
  3. 删除 package-lock.json 文件
  4. 运行 npm cache clean --force
  5. 以防万一我不确定这是否可行,我运行 npm restart (我认为这一步成功了)
  6. 运行 npm 安装
  7. 运行 npm build (在 tsconfig > angularCompilerOptions > enableIVY: false)
  8. 最重要的是重新检查 dist 文件夹以查看 ivy_ngcc 文件夹是否不存在
  9. 使用 npm 链接或发布 beta 并在父应用程序中使用它(现在它应该可以工作)!

关键带走该错误具有误导性,因为可能存在许多可能引发相同错误的问题,我的用例是使用为我们的项目创建的自定义库。希望这可以帮助一些开发人员并节省他们的时间!快乐编码!

环境详细信息:Win OS 10 npm:6.14.3 节点:14.17.2 angular:: 9.1.3

于 2022-01-24T10:30:14.327 回答