【发布时间】:2017-08-22 18:41:01
【问题描述】:
至少一个月以来,我一直在尝试导出一个简单的 Angular4 模块以在另一个项目中工作。阅读了很多文章,但它不起作用。 这里a file containing two folders:
lib -> Containing a simple Angular4 module
demo -> Containing a simple AngularCli project
lib 是 Angular 模块的一个非常简单的实现,demo 是在其根模块中导入该模块。
无论我做什么,演示应用程序都会给我不同类型的错误,说 lib 不是 Angular 模块。
有时说不包括装饰器,有时会出现这个错误:
错误中的错误遇到静态解析符号值。 不支持函数调用。考虑更换功能或 lambda 引用导出的函数(位置 194:50 在 原始 .ts 文件),解析符号 NgModule
我尝试定位 es5 和 es2015,但运气不佳。
重现问题的步骤:
下载 zip 并将其解压缩到文件夹中
cd
lib文件夹运行
npm install或yarn install安装依赖项运行
npm run bundle或yarn bundle将库捆绑到distcd
demo文件夹运行
npm install或yarn install运行
npm install ../lib或yarn add file:../lib安装位于lib文件夹内的本地ng-test-lib运行
npm start或yarn start启动Demo项目
更新:
我在这里添加一些文件的内容:
lib/src/a-module.ts
import { NgModule } from '@angular/core';
import { ADirective } from './a-directive';
@NgModule({
declarations: [
ADirective,
],
exports: [
ADirective,
]
})
export class AModule {}
lib/src/a-directive.ts
import {
Input,
OnInit,
Directive,
} from '@angular/core';
@Directive({
selector: '[aDir]',
})
export class ADirective implements OnInit {
@Input() test: string;
ngOnInit() {
console.log(`I'm the directive, and this is test value: ${this.test}`);
}
}
lib/tsconfig.aot.json
{
"compilerOptions": {
"sourceMap": true,
"inlineSources": true,
"declaration": true,
"noImplicitAny": false,
"skipLibCheck": true,
"stripInternal": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"suppressImplicitAnyIndexErrors": true,
"module": "es2015",
"target": "es5",
"moduleResolution": "node",
"lib": [
"es2015",
"dom"
],
"outDir": "./dist",
"rootDir": "./src",
"baseUrl": ".",
"types": []
},
"files": [
"./src/a-module.ts"
],
"angularCompilerOptions": {
"strictMetadataEmit": true,
"skipTemplateCodegen": true,
"annotateForClosureCompiler": true,
"flatModuleOutFile": "index.js",
"flatModuleId": "index",
"genDir": "./dist"
}
}
有人知道这里发生了什么吗?
【问题讨论】:
-
你能把你的lib模块的代码贴在这里吗?我们中的一些人可能不在我们可以下载/运行您的代码的机器上。
-
当然。我添加了一些代码
-
我相信这是与
@angular/compiler相关的问题,这就是为什么它需要编译并查看发生了什么。
标签: angular angular-module angular-aot