NativeScript w / Angular 9 — ОШИБКА в ../node_modules/nativescript-ui-sidedrawer/__ivy_ngcc__/angular/side-drawer-directives.js

#angular #nativescript #upgrade #nativescript-plugin

#угловой #нативный скрипт #Обновление #nativescript-плагин #nativescript

Вопрос:

У меня было приложение NativeScript, созданное с Angular 8.2.0 и NS 6.4.1. У меня был этот плагин (https://github.com/ProgressNS/nativescript-ui-feedback ) nativescript-ui-sidedrawer включен в мой проект, и он работал нормально, и я мог скомпилировать проект.

Я следовал этим указаниям здесь: https://github.com/NativeScript/nativescript-angular/wiki/Updating-and-developing-for-@nativescript-angular-v9-with-Ivy-or-without Чтобы обновить мой проект до Angular 9.

Когда я запускаю эту команду, я получаю сообщение об ошибке: tns build android --env.aot

 tns build android --env.aot
Preparing project...
Hash: 3428173c1802ae5194b7
Version: webpack 4.27.1
Time: 6666ms
Built at: 17/09/2020 14:38:16
 3 assets
Entrypoint bundle = runtime.js vendor.js bundle.js
[../$$_lazy_route_resource lazy recursive] ../$$_lazy_route_resource lazy namespace object 160 bytes {bundle} [built]
[./app.css] 3.15 KiB {bundle} [built]
[./app/app-routing.module.ts] 1.31 KiB {bundle} [built]
[./app/app.component.ts] 1.52 KiB {bundle} [built]
[./app/app.module.ts] 1.72 KiB {bundle} [built]
[./app/home/home-routing.module.ts] 1.22 KiB {bundle} [built]
[./app/home/home.component.ts] 1.82 KiB {bundle} [built]
[./app/home/home.module.ts] 1.78 KiB {bundle} [built]
[./app/home/side-drawer/side-drawer.component.ts] 2.43 KiB {bundle} [built]
[./app/home/side-drawer/side-drawer.service.ts] 1.75 KiB {bundle} [built]
[./main.ts] 1.38 KiB {bundle} [built]
[./package.json] 100 bytes {bundle} [optional] [built]
      612 hidden modules

ERROR in ../node_modules/nativescript-ui-sidedrawer/__ivy_ngcc__/angular/side-drawer-directives.js
Module not found: Error: Can't resolve './..' in '/Users/aubrey/Documents/GitHub/Angular9SideDrawer/node_modules/nativescript-ui-sidedrawer/__ivy_ngcc__/angular'
 @ ../node_modules/nativescript-ui-sidedrawer/__ivy_ngcc__/angular/side-drawer-directives.js 3:10-25 6:23-38
 @ ./app/app.module.ts
 @ ./main.ts
Executing webpack failed with exit code 2.
  

Я пытался удалить и переустановить node_modules, и это не помогло.

Вот мой исходный код для воспроизведения ошибки: https://github.com/aquinn637/Angular9SideDrawer/tree/ng9upgrade

package.json

 {
  "nativescript": {
    "id": "org.nativescript.Angular9SideDrawer",
    "tns-android": {
      "version": "6.5.0"
    },
    "tns-ios": {
      "version": "6.5.0"
    }
  },
  "description": "NativeScript Application",
  "license": "SEE LICENSE IN <your-license-filename>",
  "repository": "<fill-your-repository-here>",
  "dependencies": {
    "@angular/animations": "~9.1.12",
    "@angular/common": "~9.1.12",
    "@angular/compiler": "~9.1.12",
    "@angular/core": "~9.1.12",
    "@angular/forms": "~9.1.12",
    "@angular/platform-browser": "~9.1.12",
    "@angular/platform-browser-dynamic": "~9.1.12",
    "@angular/router": "~9.1.12",
    "@nativescript/angular": "^9.0.0",
    "@nativescript/core": "^6.5.18",
    "@nativescript/theme": "~2.3.0",
    "nativescript-ui-sidedrawer": "^8.0.1",
    "reflect-metadata": "~0.1.12",
    "rxjs": "^6.5.5",
    "tns-core-modules": "~6.5.0",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.3"
  },
  "devDependencies": {
    "@angular-devkit/schematics": "^10.1.2",
    "@angular/compiler-cli": "^9.1.12",
    "@ngtools/webpack": "^9.1.12",
    "nativescript-dev-webpack": "~1.5.0",
    "typescript": "~3.8.3"
  },
  "gitHead": "20a65d338ae8f8911087ab6615b89363f864b07b",
  "readme": "NativeScript Application",
  "scripts": {
    "ngcc": "ngcc --properties es2015 module main --first-only",
    "postinstall": "npm run ngcc"
  }
}
  

Ответ №1:

Попробуйте обновить свой nativescript-ui-sidedrawer пакет, есть новая версия, мне кажется, что у вашей версии нет правильных конфигураций или источников сборки для AOT

Комментарии:

1. Хорошо, вы используете компилятор IVY? если нет, пожалуйста, проверьте, что в вашем плагине все настроено для использования устаревшего transpiler. Также я замечаю, что он жалуется на относительные пути, убедитесь, что ваш tsconfig.JSON использует правильные базовые пути. Или вы ссылаетесь на правильную папку node_module.

Ответ №2:

Убедитесь, что ваш tsconfig.json содержит

 "skipLibCheck": true
  

похоже, что она появляется по умолчанию, если вы создаете новый проект, но не добавляется в процессе обновления. Добавление этого исправило для меня все проблемы, связанные с боковым ящиком, и теперь я могу скомпилировать приложение без проблем.

Ниже приведен пример моего файла tsconfig:

 {
  "compilerOptions": {
    "module": "esnext",
    "target": "es2017",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noEmitHelpers": true,
    "noEmitOnError": true,
    "skipLibCheck": true,
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "lib": [
      "es2017",
      "dom"
    ],
    "baseUrl": ".",
    "paths": {
      "~/*": [
        "src/*"
      ]
    }
  },
  "exclude": [
    "node_modules",
    "platforms"
  ]
}