ОШИБКА в Невозможно прочитать свойство 'fileName' из null После обновления Angular 7 до Angular 9 - PullRequest
2 голосов
/ 19 марта 2020

Я получаю ОШИБКУ в Невозможно прочитать свойство 'fileName' с нулевым значением после обновления angular 7 до 9. Я обновил все свои зависимости до последней версии.

enter image description here

. json

{
    "name": "project name",
    "version": "0.0.0",
    "license": "MIT",
    "scripts": {
        "ng": "ng",
        "start": "ng serve",
        "build": "ng build",
        "test": "ng test",
        "lint": "ng lint",
        "e2e": "ng e2e"
    },
    "private": true,
    "dependencies": {
        "@angular/animations": "9.0.6",
        "@angular/cdk": "^9.1.3",
        "@angular/cli": "9.0.6",
        "@angular/common": "9.0.6",
        "@angular/compiler": "9.0.6",
        "@angular/core": "9.0.6",
        "@angular/forms": "9.0.6",
        "@angular/http": "7.2.16",
        "@angular/platform-browser": "9.0.6",
        "@angular/platform-browser-dynamic": "9.0.6",
        "@angular/router": "9.0.6",
        "@ngui/datetime-picker": "^0.16.2",
        "angular-flash-message": "^3.4.0",
        "angular2-clipboard": "^2.0.14",
        "angular2-color-picker": "^1.3.1",
        "angular2-cookie": "^1.2.6",
        "angular2-flash-messages": "^3.0.1",
        "angular2-modal": "^3.0.3",
        "angular2-multiselect-dropdown": "^4.6.3",
        "chart.js": "^2.9.3",
        "chart.piecelabel.js": "^0.15.0",
        "chartjs-plugin-datalabels": "^0.7.0",
        "chartjs-plugin-labels": "^1.1.0",
        "core-js": "^3.6.4",
        "file-saver": "^2.0.2",
        "file-saver-typescript": "^1.0.1",
        "jasmine-core": "^3.5.0",
        "jasmine-spec-reporter": "^4.2.1",
        "jspdf": "^1.5.3",
        "jspdf-autotable": "^3.2.13",
        "moment-timezone": "^0.5.28",
        "ng-circle-progress": "^1.5.1",
        "ng-click-outside": "^6.0.0",
        "ng-diff-match-patch": "^3.0.1",
        "ng-pick-datetime": "^7.0.0",
        "ng-pick-datetime-moment": "1.0.8",
        "ng2-charts": "^2.3.0",
        "ng2-ckeditor": "^1.2.7",
        "ng2-completer": "^3.0.3",
        "ng2-dnd": "^5.0.2",
        "ng2-pdf-viewer": "^6.1.2",
        "ng5-breadcrumb": "^0.0.6",
        "ngx-bootstrap": "5.5.0",
        "ngx-bootstrap-modal": "^2.0.1",
        "ngx-chips": "^2.1.0",
        "ngx-clipboard": "^13.0.0",
        "ngx-color-picker": "^9.0.0",
        "ngx-pagination": "^5.0.0",
        "ngx-popover": "0.0.16",
        "ngx-progressbar": "^6.0.2",
        "ngx-toastr": "^12.0.0",
        "pluralize": "^8.0.0",
        "rxjs": "^6.5.4",
        "rxjs-compat": "^6.5.4",
        "tslib": "^1.11.1",
        "web-animations-js": "2.3.2",
        "xlsx": "^0.15.6",
        "zone.js": "^0.10.3"
    },
    "devDependencies": {
        "@angular-devkit/build-angular": "^0.900.6",
        "@angular/compiler-cli": "9.0.6",
        "@angular/language-service": "9.0.6",
        "@types/jasmine": "3.5.9",
        "@types/node": "^13.9.1",
        "codelyzer": "~5.2.1",
        "jasmine-spec-reporter": "^4.1.1",
        "karma": "^4.4.1",
        "karma-chrome-launcher": "~3.1.0",
        "karma-cli": "~2.0.0",
        "karma-coverage-istanbul-reporter": "^2.1.1",
        "karma-jasmine": "~3.1.1",
        "karma-jasmine-html-reporter": "^1.5.2",
        "protractor": "^5.4.3",
        "ts-node": "~8.6.2",
        "tslint": "~6.1.0",
        "typescript": "3.8.3"
    } }

Когда я пытался обслуживать, собирать приложение, оно получало такую ​​же ошибку. Есть ли возможность отследить местонахождение этой ошибки? Это связано с какой-либо из зависимостей, которые я использую в настоящее время? Может ли кто-нибудь, пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

После ссылки this (что также решило мою проблему),

Проблема с ngx-bootstrap/* версия

Ошибка происходит, потому что angular -io-slimscroll имеет прямую зависимость от @ angular / core@5.x. Я удивлен, что это работало даже до Ivy. Библиотеки Angular не должны содержать собственную версию Angular (вместо них они должны иметь пакеты @ angular / * в качестве peerDependencies).

Последний коммит angular-io-slimscroll был более 1,5 лет go, поэтому проект, скорее всего, больше не поддерживается. Есть также несколько открытых проблем совместимости с последними Angular версиями: rd-dev-ukraine/angular-io-slimscroll, rd-dev-ukraine/angular-io-slimscroll, rd-dev-ukraine/angular-io-slimscroll

В моем случае, после того как я удалил ng2-chessboard, pdfjs зависимости и обновлены @ngrx/store, @ngx-formly/bootstrap, @ngx-formly/core до последней версии. Бум, Это решено, дайте мне знать, если это поможет.

0 голосов
/ 30 марта 2020

TLDR: было установлено несколько версий @ angular / core.


После некоторой отладки я нашел способ сгенерировать трассировку стека для моей ситуации. Вот шаги, которые я предпринял:

  1. Глядя на сообщение об ошибке, обратите внимание, что ERROR in ${error} присутствует. Выполните поиск в node_modules для ERROR in, что приведет к node_modules/@angular-devkit/build-angular/src/angular-cli-files/utilities/stats.js в функции statsErrorsToString

  2. Обратите внимание на аргумент json и массив json.errors

  3. Добавьте console.trace к функции statsErrorsToString

  4. Поднимите трассировку стека до node_modules/@angular-devkit/build-webpack/src/webpack-dev-server/index.js в функции runWebpackDevServer, которая возвращает вызов createWebpack(config) с обратным вызовом

  5. Добавьте console.debug(stats.compilation.errors) к обратному вызову из Promise, возвращенного createWebpack(config), чтобы увидеть полную трассировку стека Cannot read property 'fileName' of null ошибка.

Вот вывод ошибки, который я получил (YMMV):

[
  TypeError: Cannot read property 'fileName' of null
      at Object.getImportRewriter (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/rendering/utils.js:22:72)
      at DtsRenderer.renderDtsFile (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/rendering/dts_renderer.js:76:72)
      at /path/to/project/node_modules/@angular/compiler-cli/ngcc/src/rendering/dts_renderer.js:68:134
      at Map.forEach (<anonymous>)
      at DtsRenderer.renderProgram (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/rendering/dts_renderer.js:68:26)
      at Transformer.transform (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/packages/transformer.js:87:52)
      at /path/to/project/node_modules/@angular/compiler-cli/ngcc/src/main.js:191:42
      at SingleProcessExecutorSync.SingleProcessorExecutorBase.doExecute (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:35:17)
      at /path/to/project/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:56:59
      at SyncLocker.lock (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/locking/sync_locker.js:33:24)
      at SingleProcessExecutorSync.execute (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/execution/single_process_executor.js:56:27)
      at Object.mainNgcc (/path/to/project/node_modules/@angular/compiler-cli/ngcc/src/main.js:209:25)
      at Object.process (/path/to/project/node_modules/@angular/compiler-cli/ngcc/index.js:28:23)
      at NgccProcessor.processModule (/path/to/project/node_modules/@ngtools/webpack/src/ngcc_processor.js:98:16)
      at /path/to/project/node_modules/@ngtools/webpack/src/compiler_host.js:349:36
      at Array.map (<anonymous>)
]

Похоже, this.bundle.dts.r3SymbolsFile равно null. Буду обновлять этот пост по мере отладки.


Оказывается, у меня установлено несколько версий Angular. Я также использую lerna js в этом проекте, поэтому в поиске неверной версии node_modules/@angular/core для r3FileName.

...