1

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

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

在此处输入图像描述

路线定义在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可以正常工作。

捆绑它以在 Android 上运行tns run android --bundle是行不通的,因为它找不到模块。

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

如果我让文件观察程序为 Android 构建运行并将路径更改回../products/products.module#ProductsModule,那么 Android 和 Web 都可以正常工作。

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

如果您对为什么会发生这种情况有任何解释和/或没有“hacky”的强大修复,我很想听听。

4

1 回答 1

1

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

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

我没有从一开始就选择此路径的原因是因为我曾经~/app/products/products.module#ProductsModule开始并对其进行了编辑,以便在 Android 文件观察程序仍在运行时使 Web 构建工作。

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

于 2019-05-26T15:25:03.620 回答