ERROR in Error遇到静态解析符号值。调用函数'ɵmakeDecorator'

时间:2017-05-06 00:22:13

标签: angular typescript

ERROR in Error encountered resolving symbol values statically

相关

进一步参考:1 2 3 4 5

我目前正在为Angular构建TypeScript library(使用Angular 4)。启用AOT后,我收到此错误。

  

ERROR in Error遇到静态解析符号值。调用   函数'ɵmakeDecorator',不支持函数调用。考虑   使用对导出的引用替换函数或lambda   功能,解析符号NgModule in   /home/.../node_modules/@angular/core/core.d.ts,解析符号   MyModule在/home/.../dist/contents.module.d.ts中,解析符号   MyModule位于/ home /.../ dist / contents.module.d.ts

根据Angular版本,我得到了另一个错误:

  

ERROR in Error遇到静态解析符号值。调用   函数'makeDecorator',不支持函数调用[...]

Angular项目的

Enabling AOT阻止了这个:

  

MyModule中的错误不是NgModule

1 个答案:

答案 0 :(得分:15)

更好的解决方案:

强制你的Angular项目(或angular-cli)从你的主项目加载你的@angular依赖项,而不是库的加载项。

tsconfig.json (请记住,angular-cli主tsconfig文件保留在src / tsconfig.app.json和tsconfig.spec.json中)

"compilerOptions": {
  ...
  "paths": { "@angular/*": ["../node_modules/@angular/*"] }
}

SebastianSchenkdrew-moore

以前的尝试:

经过几个小时的测试和挖掘GitHub问题回复......

我发现它就像一样简单,在客户端的安装中有一个node_modules/文件夹。 That是我正在处理的库(单击here直到提交它正常工作)。

因此,在开发设置中工作时可能会node_modules,但只要将项目集成到另一个项目中,就会删除该文件夹。

在我的情况下,我在客户端文件夹中有一个node_modules文件夹的原因是由于之前的npm link - > npm link my-package。由于我在开发设置中使用node_modules,因此它们也在链接文件夹中。

请注意,您的问题可能来自其他地方:

例如:小心lambdas,改用函数。

还有更多:

  • const lambda =>出口功能
  • 默认导出=>命名出口 *对于从模板
  • 访问的任何成员,应将私有受保护访问者更改为公共访问者
  • 动态组件模板=>静态模板
  • moduleId应该在使用templateUrl
  • 的组件上设置

请务必检查full description of each of these - 信用额Isaac Mann