【问题标题】:Error: Cannot find module 'app/MyComponent/MyComponent.module' Error: Cannot find module错误:找不到模块“app/MyComponent/MyComponent.module”错误:找不到模块
【发布时间】:2018-12-30 07:52:13
【问题描述】:

这与提到的here 非常相似,但是 cmets 或答案中提供的每个解决方案都没有解决我的问题。想看看还有什么我应该看的。我尝试了不同的路径,例如

  • ./app/mycomponent/mycomponent.module#MyComponentModule,
  • .mycomponent//mycomponent.module#MyComponentModule

但没有任何效果。我的问题和原始问题之间的最大区别是,我们最近添加了 webpack,那是应用程序崩溃的时候。当我们不使用任何捆绑服务(webpack)并且一切都是单独的文件时,一切都很好。 我的主页 home.module 也没有这个问题。其他所有页面或模块都会抛出完全相同的问题。在实现方面,家庭和其他模块之间实际上并没有太大区别。

我的路由模块有这个

{
    path: 'mycomponent',
    loadChildren: 'app/mycomponent/mycomponent.module#MyComponentModule'
}

下面的完全异常

bootstrap:51 ERROR 错误:未捕获(承诺中):错误:找不到 模块'app/mycomponent/mycomponent.module'错误:找不到模块 'app/mycomponent/mycomponent.module' 在 browser.es5.js:91 在 ZoneDelegate.invoke (zone.js:392) 在 Object.onInvoke (animations.es5.js:7) 在 ZoneDelegate.invoke (zone.js:391) 在 Zone.run (zone.js:142) 在 zone.js:873 在 ZoneDelegate.invokeTask (zone.js:425) 在 Object.onInvokeTask (animations.es5.js:7) 在 ZoneDelegate.invokeTask (zone.js:424) 在 Zone.runTask (zone.js:192) 在 browser.es5.js:91 在 ZoneDelegate.invoke (zone.js:392) 在 Object.onInvoke (animations.es5.js:7) 在 ZoneDelegate.invoke (zone.js:391) 在 Zone.run (zone.js:142) 在 zone.js:873 在 ZoneDelegate.invokeTask (zone.js:425) 在 Object.onInvokeTask (animations.es5.js:7) 在 ZoneDelegate.invokeTask (zone.js:424) 在 Zone.runTask (zone.js:192) 在 resolvePromise (zone.js:824) 在 resolvePromise (zone.js:795) 在 zone.js:873 在 ZoneDelegate.invokeTask (zone.js:425) 在 Object.onInvokeTask (animations.es5.js:7) 在 ZoneDelegate.invokeTask (zone.js:424) 在 Zone.runTask (zone.js:192) 在 drainMicroTaskQueue (zone.js:602)

下面是我的 webpack 配置

const path = require('path');

module.exports = {   entry: './src/main.ts',  
devtool: 'source-map',  
module: {
    rules: [
      {
        test: /\.tsx?$/,
        loaders: ['ts-loader'],
        exclude: [/\.(spec|e2e)\.ts$/]
      },
      {
        test: /\.(html|css)$/, 
        loader: 'raw-loader',
        exclude: /\.async\.(html|css)$/
      }
    ]   },   
 resolve: {
    extensions: [ '.tsx', '.ts', '.js' ]   },   
 output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')    } };
  • 角度:4.3.6
  • 打字稿:2.9.2

【问题讨论】:

  • 你可以试试这个 loadChildren: 'src/app/mycomponent/mycomponent.module#MyComponentModule'
  • @MuhammedAlbarmawi 是的。试过了..没用..我尝试了所有不同的变体:(
  • 您能否确认 WebPack 正在按预期创建捆绑包。我认为它会为每个惰性模块创建编号的包,所以在你的 dist 文件夹中寻找类似 @​​987654324@ 的东西。
  • 我们打包确实是在创建包,但它只是 bundles.js 而不是单独的块。在 bundles.js 中,我可以看到我的组件及其标记。

标签: angular webpack


【解决方案1】:

对于其他来这里的人..我无法弄清楚我的路径有什么问题..我的队友让它工作了..在路由模块中..我们改为

import { MyComponentModule } from './myComponentModule/MyComponent.module';

然后在加载中调用这个类名

{
    path: 'myComponent',
    loadChildren: ()=> MyComponentModule
},

虽然这行得通,但我不知道为什么旧版本不起作用,即使我给出了完全相同的路径。

【讨论】:

  • 感谢您的解决方案,这样看起来也更好...您找出导致错误的原因了吗?
【解决方案2】:

您可以使用路由模块所在位置的相对路径:

{
    path: 'mycomponent',
    loadChildren: '../mycomponent/mycomponent.module#MyComponentModule'
}

Angular 6 似乎改变了要求,因此loadChildren 必须始终是相对的。我在将应用程序迁移到较新版本时遇到了这个问题。

在此处查看此更改:

https://github.com/angular/angular/commit/f44a2c730a84cd86695d1851395ad28423704bd0

更新后的文档现在说“相对”。

【讨论】:

  • 试过了。不工作。我正在使用 Angular 4。用版本堆栈更新我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多