2016-03-18 51 views
6

我正在使用angular2-seed作爲我的項目的種子。 require在源文件中工作得很好。但是,無論何時我包含一個新庫並將其引用到index.html中,在控制檯中彈出錯誤require未定義。Angular2需求沒有爲node_modules中的庫定義

Systemjs包括

我已經閱讀的SO以前的答案提示使用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>

錯誤

enter image description here

源,其中需要使用

lodash

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

同樣其他圖書館一樣ng2-selectng2-bootstrap

index.js有類似的錯誤

回答

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> 

看到這些問題的更多詳細信息:

+0

非常感謝@Theirry,該systemConfig解決方案是工作。但是如果添加lodash/index.js而不是lodash/lodash.js,那麼需要的錯誤再次出現。 lodash的index.js只有這個'module.exports = require('./ lodash');'........爲什麼lodash.js正在工作,而不是index.js .... ?? – hhsadiq

相關問題