2017-02-12 5 views
0

Ich habe versucht, FileSaver für meine App zu importieren. Und der einzige Weg, dass ich es an die Arbeit bekam, war durch den folgenden BefehlWinkelmodul von es6 zu commonJs Konsequenz

import filesaver = require('filesaver'); 

Dann bekomme ich diesen Fehler

Import Zuordnung kann nicht verwendet werden, wenn ECMAScript Targeting-2015-Module

Ich folgte der Lösung, indem ich das Modul in tsconfig.json von es6 in commonjs änderte.

Alles funktioniert jetzt gut. Ich bin jedoch etwas besorgt darüber, was die Konsequenz für den Wechsel von es6 zu commonjs ist. Offensichtlich war es ES6 aus einem Grund oder?

Gibt es eine Möglichkeit, es so zu tun, dass ich nicht ändern muss?

+0

die äquivalente es6 Zeile wäre 'import * als Dateiserver von 'Dateiserver';' – Claies

Antwort

1

Ja, wenn Sie mit Typoskript, Verwendung es6/Typoskript Modul-Lade Syntax:

import { type } from './module'; 

Wenn Sie Typoskript zu JavaScript kompiliert, können Sie jedes Modul-Lader Sie wollen Ziel:

es6 
system 
commonjs 
AMD 
UMD 

Sie können das Modulsystem von tsconfig.json aus zielen:

"compilerOptions": { 
    ... 
    "module": "commonjs", 
} 

Browser noch nicht unterstützt nativ das Laden von Modulen. Fügen Sie das erforderliche Skript hinzu, je nachdem, welches Modulsystem Sie verwenden.

Zum Beispiel, wenn Sie "System" oder "Commonjs" zielen, dann stellen Sie sicher, dass Sie ein kompatibles Skript enthalten korrekt das Modul zu laden (dh node_modules/systemjs/dist/system.js)

My Advice Wenn Sie Ihre ng2 App in TypeScript schreiben

IMHO, es6 bietet die sauberste Modul laden Syntax. Ich bevorzuge es, Angular2-Programme mit TypeScript zu schreiben und es6-Sprachfunktionen zu verwenden (einschließlich der Lade-Syntax für den Reinigungsmodul). Wenn es darum geht, TypScript in JavaScript zu kompilieren, versuche ich es auf es5 auszurichten, da die meisten Browser heutzutage fast 100% Übereinstimmung ohne Shim bieten und systemjs als Modulladeprogramm verwenden (am flexibelsten, wenn ich später Formate ändern möchte).

In den FileServer-Code schreiben Sie es in TypeScript, und verwenden Sie ES6-Modul laden Syntax. Auf diese Weise wird es zu der Modullader-Syntax kompiliert, auf die Sie abzielen, die mit dem Rest Ihrer ts-Dateien konsistent sein sollte.