[at-loader]出错无法找到模块' ./ app.component.ngfactory'

时间:2016-12-22 21:49:21

标签: angularjs node.js angular2-aot

我的错误如下:

[at-loader] assets \ app \ app.module.ngfactory.ts中的错误:28:27     找不到模块' ./ app.component.ngfactory'。

运行npm run build后,app.module.ngfactory.ts按预期创建,但它创建了对我没有/无法找到的模块的引用:

导入*作为import21来自' ./ app.component.ngfactory';

查看aot-complier链接,我在编译应用程序部分中看到以下内容:

  

好奇的人可以打开 aot / app.component.ngfactory.ts 来查看   原始Angular模板语法在其中间,   编译到TypeScript表单。

我认为我的问题可能来自于我运行

时的事实
  

" node_modules /的.bin / NGC" -p tsconfig-aot.json

它需要为其正在创建的组件分配一个名称,并且我不确定该名称是否可以是任何名称,或者是否需要特定的名称。 我已经尝试了名称NgFactory,app.component.ngfactory和我的项目的名称,但这些都没有做出任何我能看到的变化。我也没有看到我的tsconfig-aot.json文件中的文件夹被指定为genDir,只有outDir。

  

在ngc完成后,在中查找NgFactory文件的集合   aot文件夹(在tsconfig-aot.json中指定为genDir的文件夹)。

以下是我的tsconfig-aot.json目前包含的内容:

    {
    "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "./public/js/app"
    },
    "exclude": [
    "node_modules",
    "dist",
    "assets/app/polyfills.ts"
    ],

    "angularCompilerOptions": {
    "skipMetadataEmit" : true
    }

}

如果您需要任何其他信息,请与我们联系。我还没有找到任何关于此事的东西,而且我现在已经找了两天了。

1 个答案:

答案 0 :(得分:1)

我终于得到app.component.ngfactory来构建/我的整个aot文件夹。我更仔细地看了一下angular cookbook aot-compiler,并决定重新做一些实例化,以下是使它工作的原因:

  

npm install @ angular / compiler-cli @angular / platform-server --save

我猜它第一次没有正确安装或者发生了其他事情。安装完成后,我可以运行以下命令并生成aot文件夹:

"node_modules/.bin/ngc" -p tsconfig.aot.json

我还将tsconfig.aot.json文件更改为以下内容:

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "./public/js/app"
  },

  "files": [
    "app/app.module.ts",
    "app/main.aot.ts"
  ],

  "exclude": [
    "node_modules",
    "dist",
    "assets/app/polyfills.ts"
  ],

  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit" : true
  }
}