没有为node_modules中的库定义Angular2 require

时间:2016-03-18 07:13:36

标签: javascript angular

我使用angular2-seed作为我项目的种子。 require在源文件中运行得非常好。但每当我在index.html中包含一个新库并引用它时,控制台中就会弹出一个错误require未定义。

包括Systemjs

我在SO上有 READ 以前的答案,建议使用system.js。 systemjs已经包含在内。

的index.html



<!-- shims:js -->
<script src="/node_modules/systemjs/dist/system.src.js?1458283463580"></script>
<script src="/node_modules/systemjs/dist/system-polyfills.src.js?1458283463581"></script>
<script src="/node_modules/reflect-metadata/Reflect.js?1458283463582"></script>
<script src="/node_modules/es6-shim/es6-shim.js?1458283463582"></script>
  <script src="/node_modules/angular2/bundles/angular2-polyfills.js?1458283463582"></script>
<!-- endinject -->

  
<script>System.config({"defaultJSExtensions":true,"paths":{"./admin/main":"/./admin/main","angular2/*":"/angular2/*","rxjs/*":"/rxjs/*","*":"/node_modules/*"},"packages":{"angular2":{"defaultExtension":false},"rxjs":{"defaultExtension":false}},"map":{"moment":"moment/moment.js"}})</script>
  

<!-- libs:js -->
<script src="/node_modules/rxjs/bundles/Rx.js?1458283463585"></script>
<script src="/node_modules/angular2/bundles/angular2.js?1458283463585"></script>
<script src="/node_modules/angular2/bundles/router.js?1458283463585"></script>
<script src="/node_modules/angular2/bundles/http.js?1458283463586"></script>
<script src="/node_modules/ng2-bootstrap/ng2-bootstrap.js?1458283463586"></script>
<script src="/node_modules/ng2-select/ng2-select.js?1458283463586"></script>
<script src="/node_modules/lodash/index.js?1458283463587"></script>
<script src="/node_modules/ng2-pagination/index.js?1458283463587"></script>
<!-- endinject -->

<!-- inject:js -->
<!-- endinject -->

  
<script>
System.import('./admin/main')
  .catch(function (e) {
    console.error(e,
      'Report this error at https://github.com/punchagency/staffing-client/issues');
  });
</script>
&#13;
&#13;
&#13;

错误

enter image description here

使用require的来源

lodash的index.js

module.exports = require('./lodash');

类似地,ng2-selectng2-bootstrap等其他库也有类似的错误

1 个答案:

答案 0 :(得分:4)

您需要在SystemJS中配置其他依赖项,而不是将它们直接包含在script标记中。

以下是一个示例:

<script>
  System.configure({
    map: {
      'ng2-bootstrap': 'node_modules/ng2-bootstrap',
      'ng2-select': 'node_modules/ng2-select',
      lodash: 'node_modules/lodash/lodash.js'
    },
    package: {
      (...)
    }
  });
  System.import(...);
</script>

有关详细信息,请参阅以下问题: