Я новичок в nativescript - только что установил, так что все должно быть в курсе.Я пытался заставить ленивую загрузку работать, следуя руководству на сайте nativescript:
https://docs.nativescript.org/performance-optimizations/lazy-loading#implementing-lazy-loading-in-nativescript
Я следовал руководству к письму, только добавляя пустой сервиси предоставление компоненту строки шаблона.При запуске в эмуляторе Android я получаю следующее исключение:
JS: ERROR Error: Uncaught (in promise): Error: com.tns.NativeScriptException: Failed to find module: "feature/feature.module", relative to: app/tns_modules/
JS: com.tns.Module.resolvePathHelper(Module.java:146)
JS: com.tns.Module.resolvePath(Module.java:55)
JS: com.tns.Runtime.callJSMethodNative(Native Method)
JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
JS: com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
JS: com.tns.Runtime.callJSMethod(Runtime.java:983)
JS: com.tns.Runtime.callJSMethod(Runtime.java:967)
JS: com.tns.Runtime.callJSMethod(Runtime.java:959)
JS: com.tns.gen.java.lang.Object_view_31_32_TouchListenerImpl.onTouch(Object_view_31_32_TouchListenerImpl.java:18)
JS: android.view.View.dispatchTouchEvent(View.java:11721)
JS: android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
JS: android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
JS: android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
JS: android.view.ViewGroup.dispatchTouchEvent(...
Executing before-prepare hook from C:\apps\stoiccompanion\hooks\before-prepare\nativescript-dev-typescript.js
Hook skipped because either bundling or livesync is in progress.
Preparing project...
Project successfully prepared (Android)
Successfully transferred app.routing.js.
Refreshing application...
Successfully synced application org.nativescript.StoicCompanion on device emulator-5554.
JS: Angular is running in the development mode. Call enableProdMode() to enable the production mode.
Я пробовал различные формы пути, включая ~ /, / ./ и т. Д., Но все еще не радует.
Я также пытался использовать tns update
на случай, если что-то устарело.Оглядываясь в Интернете, я вижу несколько похожих проблем на их github, который обнаружил несколько потенциальных клиентов (убедитесь, что нет имен в верхнем регистре и т. Д.), Но мне не повезло.
Если это имеет значение, я 'm с использованием Windows 10.
Существуют ли какие-либо распространенные ошибки, которые я должен искать, или есть какие-либо инструменты или журналы, которые я могу исследовать, чтобы попытаться получить более подробную информацию?
Вот мое приложение.route
// app/app.routing.ts
import { NgModule } from "@angular/core";
import { NativeScriptRouterModule } from "nativescript-angular/router";
import { Routes } from "@angular/router";
import { ItemsComponent } from "./item/items.component";
import { ItemDetailComponent } from "./item/item-detail.component";
const routes: Routes = [
{ path: "", redirectTo: "/items", pathMatch: "full" },
{ path: "items", component: ItemsComponent },
{ path: "item/:id", component: ItemDetailComponent },
{ path: "feature", loadChildren: "~/feature/feature.module#FeatureModule" }, // lazy loaded module
];
@NgModule({
imports: [NativeScriptRouterModule.forRoot(routes)],
exports: [NativeScriptRouterModule]
})
export class AppRoutingModule { }
Структура каталогов моего приложения:
- src
- app
- feature
- feature.component.ts
- feature.module.ts
- feature.service.ts
- feature.routing.ts
- app.module.ts
- app.routing.ts
- и т. Д.
Редактировать
Написал большую правку, затем нашел опечатку в именах файлов.Исправлено, и теперь оно будет работать.Тем не менее, я все еще не могу использовать loadChildren:
в маршрутизаторе уровня приложения с использованием относительного пути ./app/feature/...
работает, но ~/feature/...
не работает.
Обновление до ~ / feature приводит к следующему исключению:
JS: Angular is running in the development mode. Call enableProdMode() to enable the production mode.
JS: ERROR Error: Uncaught (in promise): Error: com.tns.NativeScriptException: Failed to find module: "~/feature/feature.module", relative to: /app/
JS: com.tns.Module.resolvePathHelper(Module.java:146)
JS: com.tns.Module.resolvePath(Module.java:55)
JS: com.tns.Runtime.callJSMethodNative(Native Method)
JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
JS: com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
JS: com.tns.Runtime.callJSMethod(Runtime.java:983)
JS: com.tns.Runtime.callJSMethod(Runtime.java:967)
JS: com.tns.Runtime.callJSMethod(Runtime.java:959)
JS: com.tns.gen.java.lang.Object_view_31_32_TouchListenerImpl.onTouch(Object_view_31_32_TouchListenerImpl.java:18)
JS: android.view.View.dispatchTouchEvent(View.java:11721)
JS: android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
JS: android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
JS: android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
JS: android.view.ViewGroup.dispatchTouchEvent(ViewGroup...
В моем файле tsconfig есть следующая запись:
"paths": {
"~/*": [
"src/*"
],
"*": [
"./node_modules/tns-core-modules/*",
"./node_modules/*"
]
}
Я нашел следующую ссылку, которая подразумевает, что я должен обновить ~ / alias, чтобы он указывал на / app, что я пробовал, новсе еще была та же проблема.Я также пытался обновить с ./src/app
https://github.com/NativeScript/nativescript-dev-webpack/issues/372