NativeScript和Angular代码共享+延迟加载的模块路径

时间:2019-05-26 14:41:44

标签: android angular nativescript nativescript-codesharing

我有一个使用代码共享的NativeScript / Angular应用程序。

为了使我的项目更有条理,我创建了一个核心文件夹,其中包含用于路由的子文件夹:

enter image description here

路由在app.common.ts中定义:

export const appRoutes: Routes = [
  { path: '', redirectTo: '/products', pathMatch: 'full' },
  {
    path: 'products',
    loadChildren: '../products/products.module#ProductsModule'
  }
]

特别感兴趣的是以下属性中显示的模块路径:

loadChildren: '../products/products.module#ProductsModule'

使用ng serve -o在浏览器中提供此服务很好。

使用tns run android --bundle将其捆绑到Android上无法运行,因为找不到模块。

如果我将路径更改为~/app/products/products.module#ProductsModule,则Android应用程序将运行,但是Web应用程序找不到该模块。

如果我随后让文件查看器运行以运行Android构建并将路径更改回../products/products.module#ProductsModule,则Android和Web都可以正常工作。

我不想将路由文件移回src文件夹。我也不愿意包含任何黑客手段,例如平台驱动的路径字符串修改。

如果您对发生这种情况的原因和/或不是“ hacky”的可靠修复有任何解释,我很想听听。

1 个答案:

答案 0 :(得分:1)

问题源于有关文件监视程序的一些古怪之处。当我将路径更改为以下内容时,两个平台都可以正常工作:

../../products/products.module#ProductsModule

我一开始没有选择此路径的原因是因为我使用~/app/products/products.module#ProductsModule并对其进行了编辑,以使Web构建在Android File Watcher仍在运行时正常工作。

Android和Web文件监视程序都终止,并且路径调整为上面提供的路径后,它们都可以工作。