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

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

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

路径在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”的可靠修复有任何解释,我很想听听。

最佳答案

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

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

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

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

10-07 19:32
查看更多