我尝试在 AOT 编译后对 Angular 2 应用程序使用 Tree-shaking,然后我收到下一条消息:
'Containers/module.ngfactory' 由 Containers\module.aot.js 导入,但无法解析 - 将其视为外部依赖项
在 options.globals 中没有为外部模块 'Containers/module.ngfactory' 提供名称 - 猜测是 'Containers_module_ngfactory'
而且我不知道如何解决这个问题。
这是AOT 编译后的module.aot.js代码:
import { enableProdMode } from '@angular/core';
enableProdMode();
import { platformBrowser } from '@angular/platform-browser';
import { ModuleNgFactory } from 'Containers/module.ngfactory';
platformBrowser().bootstrapModuleFactory(ModuleNgFactory);
//# sourceMappingURL=module.aot.js.map
汇总-config.js
'use strict';
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify'
export default {
entry: './Containers/module.aot.js',
dest: './module.vendor.js',
sourceMap: false,
format: 'iife',
onwarn: function(warning) {
// Skip certain warnings
if ( warning.code === 'THIS_IS_UNDEFINED' ) { return; }
if ( warning.code === 'EVAL' ) { return; }
console.warn( warning.message );
},
plugins: [
nodeResolve({jsnext: true, module: true}),
commonjs({
include: 'node_modules/rxjs/**',
}),
uglify()
]
}
和tsconfig-aot.json
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"baseUrl": ".",
"paths": {
"app/*": [ "../src/*" ]
},
"typeRoots": [
"../node_modules/@types"
]
},
"files": [
"../src/globals.ts",
"../src/Containers/module.aot.ts"
],
"exclude": [
"node_modules",
"typings"
],
"angularCompilerOptions": {
"genDir": "../",
"skipMetadataEmit": false,
"skipTemplateCodegen": false
}
}
一般来说,AOT 工作正常,但我无法运行摇树以将我的代码捆绑到一个文件中。
请帮我解决这个问题。
UPD
这只是主module.aot.js文件的问题。
任何建议如何解决这个问题?