Angular 4:为什么使用我用npm触发的包编译一个项目' makeDecorator'编译错误

时间:2017-07-07 19:30:39

标签: angular npm angular-cli

自从我开始编写两个npm软件包以来,我收到了这个错误,但我无法找到解决此问题的方法。每次运行服务时,我都会出现此错误,然后如果我只是添加一个空格字符并按Ctrl + S一个文件(运行Angular-CLI编译)它就会消失!如何解决这个问题?

错误:

  

ERROR in Error遇到静态解析符号值。调用   function' makeDecorator',不支持函数调用。考虑   使用对导出的引用替换函数或lambda   功能,解析符号NgModule in   D:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/node_modules/@angular/core/src/metadata/ng_module.d.ts,解析符号NgModule in   d:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/node_modules/@angular/core/src/metadata.d.ts,   解决符号NgModule in   d:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/node_modules/@angular/core/src/core.d.ts,   解决符号NgModule in   d:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/node_modules/@angular/core/index.d.ts,   解决符号SnackbarModule in   d:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/index.ts,   解决符号SnackbarModule in   d:/GitHub/angular-npm/ngx-heyl-modal/demo/node_modules/ngx-heyl-snackbar/index.ts

我的包裹:(我在Git上的所有资源)

https://www.npmjs.com/package/ngx-heyl-modal

https://www.npmjs.com/package/ngx-heyl-snackbar

编辑:

我尝试使用npm链接和一个简单的项目:空服务,空组件(只是html文件中的div,没有输入任何功能),这个问题仍然存在。我认为这是因为NgModule,也许我写错了怎么办?还是我的package.json?

1 个答案:

答案 0 :(得分:2)

您不应在包裹中发送node_modules文件夹。

您必须记住,您正在为Angular项目编写库。由于项目本身必须将Angular核心作为依赖项,因此库不应在其生成的包中包含Angular源。为此,您需要在package.json文件中设置对等依赖项。

{
  ...  
  "peerDependencies": {
    "@angular/common": "^4.0.0",
    "@angular/core": "^4.0.0"
  }
  ...
}

创建AOT兼容角度库的简单方法就是运行ngc,但我建议您关注Angular 4 package format

这是我的测试库https://www.npmjs.com/package/@zuz/libsourcepackage.json中的peerDependencies)

请参阅这些链接以获取可能的解决方案