意想不到的价值' ...'由模块导入' ...'。请添加@NgModule注释

时间:2017-05-23 14:55:12

标签: javascript angular

使用Angular。

步骤:

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

  2. 使用ng new testApp

  3. 创建了一个新的测试应用
  4. npm link simple-ui-lib/dist

  5. testApp

    中的
  6. npm link simple-ui-lib

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

  8. 在app.module.ts文件中:

    import { BoxModule } from 'simple-ui-lib';
    
    ...
    
    @NgModule({
      ...
      imports: [
        ...
        BoxModule
      ]
    })
    

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

      

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

    我尝试过:

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

    如果我控制台登录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,但如果您有任何建议,请告诉我。

1 个答案:

答案 0 :(得分:2)

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

我还建议您使用最后一个角度cli版本并升级到angular 5