2016-05-24 9 views
1

Dies ist für die systemjs Bibliothek zu ignorieren, nicht systemjs BauerWie systemjs sagen, eine Import

Ich könnte hier ein bisschen eine Kante Fall haben. Aber ich versuche, meine Frontend-Webanwendung so einzurichten, dass sie ihre Unit-Tests in der Befehlszeile ausführt. Mein Setup erstellt derzeit das Typoskript in das -Registerformat, und Lasten werden gemäß ihren Spezifikationen in die Site importiert. Das Problem, mit dem ich derzeit konfrontiert bin, ist, dass eine meiner Abhängigkeiten reflect-metadata einen Knoten automatisch erkennen System hat, das einen require('crypto') Aufruf macht, der ein natives Knotenmodul ist (nicht verfügbar in npm). Der Fehler Ich erhalte ist:

Error: ENOENT: no such file or directory, open '/Users/path/to/project/node_modules/crypto.js'

Es gibt viele Dinge im Spiel hier verstehe ich, aber das Verhalten, das ich nach bin, ist für systemjs vollständig require('crypto') Anruf zu ignorieren und lassen Sie es durch völlig unverändert als Knoten passieren wird dies zur Laufzeit korrekt laden.

Aufgrund der Multi-Modul-Unternehmensanwendung, die wir erstellen, habe ich nicht wirklich die Freiheit, das Typoskript in commonjs zu exportieren, da die Systemjs-Version anstelle von temp commonjs build Sub-Abhängigkeiten erhält. (Der einzige Weg, dies zu tun wäre, die Commonjs Version in unserem privaten npm dist Build enthält, die bei weitem nicht ideal ist)

Hier ist die aktuelle Config ich für System benutzen, wie ich versucht habe, zu erhalten System zum Ignorieren der Crypto-Bibliothek erfordern. Ich habe das in dem genauen Zustand gelassen, in dem es war, als der obige Fehler erzeugt wurde, Kommentare und alles, damit Sie sehen konnten, was ich versucht habe.

System.config({ 
    defaultJSExtensions: true, 
    map: { 
    'angular2': 'node_modules/angular2', 
    'reflect-metadata': 'node_modules/reflect-metadata/Reflect', 
    'crypto': 'node_modules/crypto' 
    } 
    // packages: { 
    // 'reflect-metadata': { 
    //  format: 'global', 
    //  exports: 'Reflect', 
    //  defaultExtension: false, 
    //  meta: { 
    //  '*': { 
    //   defaultExtension: false 
    //  } 
    //  } 
    // } 
    // } 
    // meta:{ 
    // 'reflect-metadata/Reflect':{ 
    //  format: 'global', 
    //  exports: 'Reflect', 
    //  defaultExtension: false 
    // } 
    // } 
}); 

Antwort

4

ignorieren ein benötigen Sie es an den @empty Modul in Ihrer SystemJS Config-Datei zuordnen. können Sie dies tun, indem Sie System.config({ map: { 'crypto': '@empty' } })

hinzufügen