#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"
]
}