2016-03-18 22 views
6

Używam angular2-seed jako materiału siewnego dla mojego projektu. require działa doskonale w plikach źródłowych. Ale za każdym razem, gdy dołączam nową bibliotekę i odwołuję ją do pliku index.html, pojawia się błąd w konsoli, który nie jest zdefiniowany jako require.Wymaganie Angular2 nie jest zdefiniowane dla bibliotek w module node_modules

Systemjs jest wliczone

Mam READ wcześniejsze odpowiedzi na SO co sugeruje użycie system.js. Systemjs jest już dołączony.

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>

Błąd

enter image description here

Źródło, gdzie wymagają służy

index.js z lodash

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

Podobnie jak ng2-select innymi bibliotekami i ng2-bootstrap mają podobne błędy

Odpowiedz

4

trzeba skonfigurować dodatkowe zależności w SystemJS i nie obejmują ich bezpośrednio do script tagu.

Oto przykład:

<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> 

Patrz na te pytania po więcej szczegółów:

+0

dziękuję @Theirry, rozwiązanie systemConfig pracuje . Ale jeśli zostanie dodany program lodash/index.js zamiast lodash/lodash.js, wówczas błąd wymaga ponownie. Plik index.js na lodash ma właśnie 'module.exports = require ('./ lodash');' ........ dlaczego działa lodash.js, a nie index.js .... ?? – hhsadiq

Powiązane problemy