模块'...'导入的意外值'...'.请添加@NgModule注释

Mik*_*ike 12 javascript angular

使用Angular.

脚步:

  1. 克隆了这个简单的UI库,演示了当前的Angular包标准:https: //github.com/jasonaden/simple-ui-lib

  2. 创建了一个新的测试应用程序 ng new testApp

  3. npm linksimple-ui-lib/dist

  4. npm link simple-ui-lib 在testApp中

  5. 将示例模块从simple-ui-lib导入testApp:

在app.module.ts文件中:

import { BoxModule } from 'simple-ui-lib';

...

@NgModule({
  ...
  imports: [
    ...
    BoxModule
  ]
})
Run Code Online (Sandbox Code Playgroud)

Webpack编译得很好,但我在浏览器中收到此错误并且没有任何加载:

compiler.es5.js:1540未捕获错误:模块'AppModule'导入的意外值'BoxModule'.请添加@NgModule注释.

我试过了:

  • 清除我的npm缓存
  • 重新安装所有节点模块
  • 强制所有Angular模块在两个项目中都是相同的版本
  • 检查两个项目中的所有Angular模块是否都是相同的版本
  • 检查两个项目中的TypeScript版本是否相同
  • 使用其他样本模块包代替 simple-ui-lib
  • 使用相同的设置创建了一个全新的项目
  • 从1月开始将rollup用于版本的版本降级为版本simple-ui-lib

如果我控制台登录BoxModule,我可以看到该值存在,它似乎被注册为@NgModule,所以我很困惑这个错误试图告诉我.

我在搜索中看到了这个错误,但看起来它们几乎总是由库和主机应用程序之间的版本不匹配引起的.就我而言,版本是相同的.

版本:

  • TypeScript:2.2.0
  • @ angular/cli:1.0.4
  • @ angular/common:4.1.3

有任何想法吗?

更新: 调查更多,看起来这是@ angular/cli本身的问题.在这里打开一个错误:https: //github.com/angular/angular-cli/issues/6429,但如果您有任何建议,请告诉我.

mth*_*led 2

尝试使用es6编译器而不是es5。我之前遇到过类似的问题,更改编译模式解决了问题

我还建议您使用最新的 Angular cli 版本并升级到 Angular 5