【问题标题】:Getting NPM error while starting server with ng serve使用 ng serve 启动服务器时出现 NPM 错误
【发布时间】:2017-08-23 11:06:38
【问题描述】:

我收到错误:

ERROR in /opt/NodeJS/FutureDMS/src/app/app.module.ts (5,9): Module '"/opt/NodeJS/FutureDMS/src/app/app.routing"' has no exported member 'APP_ROUTE'.

我在 loadChildren 属性中使用了箭头函数,例如:-

{
   path: 'dashboard',
   loadChildren: () => ExampleDashboardModule
}

我也有解决办法。如果我使用

{
   path: 'dashboard',
   loadChildren: './example-dashboard/example-dashboard.module#ExampleDashboardModule'
}

而不是:

{
   path: 'dashboard',
   loadChildren: () => ExampleDashboardModule
}

然后它会正常工作。可能存在 AOT 编译器问题,但我真的很想使用带箭头功能的路由,但没有得到正确的解决方案,请给出一些建议。

【问题讨论】:

  • 能否贴出完整的app.routing和app.module文件
  • 您陈述了一个 AOT 问题。它在本地真的对你有用吗?
  • @Carsten 实际上我正在本地工作,但它不起作用。每当我尝试编译我的代码时,它都会因我提到的错误而失败,之后如果我更改代码中的某些内容并保存它,然后它会重新编译并成功编译。

标签: javascript node.js angular typescript angular2-routing


【解决方案1】:

当使用延迟加载(loadChildren)时,需要在[path to file][#][module name]中指定模块的路径——就像你发现了。不幸的是,您无法摆脱这一点:

【讨论】:

  • 谢谢 Fredrik,但我只是想知道有没有任何可能的方法可以用 arror 函数做到这一点?
  • 不,ATM 不可能。请参阅我在答案中添加的链接
  • 谢谢,或者我可以使用children 属性而不是loadChildren 并导入另一个模块的路由,然后我可以将这些路由用作子路由,我是对的,@Fredrik ?
【解决方案2】:

使用延迟加载时不能使用箭头功能。它应该是一个字符串。

为什么

当你这样做时

{
   path: 'dashboard',
   loadChildren: () => ExampleDashboardModule
}

您也这样做(示例中未显示)

import {ExampleDashboardModule} from 'somewhere'

并且您破坏了延迟加载的目的,因为您添加了该导入。

如果它只是一个字符串,你可以删除行import {ExampleDashboardModule} from 'somewhere',它会正常工作。

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多