内存编译中的@ ngtools / webpack ngfactory

时间:2017-06-26 17:08:15

标签: angular webpack aot

我知道这里有不同形式的问题以及angular-cli github,但我找不到任何有用的答案(@ ngtools / webpack文档并不完整)。< / p>

说实话,我想用一个从angular-cli创建的新应用程序测试AoT并在angular-cli之外使用它,所以步骤是:

  1. ng new test-app
  2. ng eject
  3. 对涉及的两个文件进行微小修改:
    • webpack.config.js已修改为包含entryModule
    • main.ts被修改为引导已编译的工厂模块而不是标准模块
  4. 我还删除了应用程序弹出时创建的.ngfactory文件,只是为了重新开始。

    运行Webpack时会发生什么? (省略了[...]的绝对路径详细信息)

    ERROR in [...]/test-app/src/main.ts (4,36): Cannot find module './app/app.module.ngfactory'.
    
    ERROR in ./src/main.ts
    Module not found: Error: Can't resolve './app/app.module.ngfactory' in '[...]/test-app/src'
    

    但如果我以前手动运行ngc,一切正常,显然是因为生成了app.module.ngfactory

    事实是,据说@ ngtools / webpack将生成的.ngfactory文件保存在内存中,然后将所有内容捆绑在webpack输出中,这是有道理的。但我不知道为什么它无法在内存中找到这个&#34;&#34; .ngfactory文件,如果路径不正确或其他任何原因,我找不到任何调试方法。

    是的,我知道我可以先使用ngc构建然后使用Webpack,但这样会破坏整个AoT插件的内容。

    这是main.ts:https://github.com/JimGV/angularaot/blob/master/src/main.ts

    这是webpack配置:https://github.com/JimGV/angularaot/blob/master/webpack.config.js

    这只是插件配置部分:

    new AotPlugin({
      "hostReplacementPaths": {
        "environments/environment.ts": "environments/environment.ts"
      },
      "entryModule": __dirname + "/src/app/app.module#AppModule",
      "exclude": [],
      "tsConfigPath": __dirname + "/src/tsconfig.app.json",
      "skipCodeGeneration": true
    })
    

    我在Mac El Capitan上运行节点8.1.1和Angular 4.2.4以及@ ngtools / webpack 1.4.1

    提前致谢

0 个答案:

没有答案