2016-03-23 11 views
2

Ich verwende Lodash in meiner angular2-App. indem ich declare var _: any; verwende, mache ich lodash Operation wie _.findIndex(...). Jetzt stehe ich vor einem Problem. manchmal während des Ladens der Seite bekomme ich Fehler wie untenLodash in angular2, deklariere var_: any funktioniert nicht

EXCEPTION: ReferenceError: _ is not defined 

Wie kann ich das vermeiden? Da meine Annahme, ausgeführt wird lodash Code vor declare var _: any;

+0

ist es notwendig, auf diese Weise zu verwenden lodash? – micronyks

+0

Mögliches Duplikat von [angular2 failing lodash import] (http://stackoverflow.com/questions/35130682/angular2-failing-lodash-import) –

Antwort

2

In der Tat kommt es auf die Art und Weise der lodash Bibliothek in Ihre HTML-Seite zu konfigurieren/include:

  • Schließen Sie die Datei lodash.js in ein script Element ein. Auf diese Weise steht lodash als globale Variable (_) in der Anwendung zur Verfügung. In diesem Fall müssen Sie es nutzen Umgebungserklärungen Typoskript definieren:

    declare var _: any; 
    
  • Konfigurieren Sie die lodash.js-Datei in die SystemJS Konfiguration. Auf diese Weise wird die lodash-Bibliothek erkennen, dass sie innerhalb eines Modulladeprogramms verwendet wird, so dass sie sich selbst als Modul registriert und die Variable _ in Exporte zurückgibt. In diesem Fall müssen Sie einen Import verwenden, um es zu erhalten. Da die _ Variable direkt in den Export festgelegt ist, müssen Sie es auf diese Weise importieren:

    import _ from 'lodash'; 
    

    Die entsprechende Konfiguration wäre:

    System.config({ 
        (...) 
        map: { 
        lodash: 'node_modules/lodash/lodash.js' 
        }, 
        meta: { 
        lodash: { format: 'amd' } 
        } 
    }); 
    
+0

Können wir es nicht direkt mit '' am verwenden Oberseite der Komponente? – micronyks

+0

In der Tat sind 'Referenz' nur für die Kompilierung, um den Vertrag der Bibliothek zu importieren ... Es ist nicht für die Laufzeit. –

+0

Noch bin ich nicht klar damit. Schau, ich habe das gemacht, http://plnkr.co/edit/3xEZBpwz6NCMU1uxBg5O?p=preview kannst du mir sagen, was ist los damit? Ich verstehe nicht, was meinst du mit 'Laufzeit '? – micronyks

0

Wenn Sie Typoskript verwenden, dann müssen Sie die Bibliothek in Ihrer Datei importieren:

import _ from 'lodash'; 

einen Blick auf eine simular Frage: angular2 failing lodash import

Verwandte Themen