it-swarm.com.de

Unerwarteten Token-Export erhalten

Ich versuche, ES6-Code in meinem Projekt auszuführen, erhalte jedoch einen unerwarteten Token-Exportfehler.

export class MyClass {
  constructor() {
    console.log("es6");
  }
}
141
Jason

Sie verwenden die ES6-Modulsyntax.

Dies bedeutet, dass Ihre Umgebung (z. B. node.js) die ES6-Modulsyntax unterstützen muss.

NodeJS verwendet die CommonJS-Modulsyntax (module.exports) und nicht die ES6-Modulsyntax (export Schlüsselwort).

Lösung:

  • Verwenden Sie das Paket babel npm, um Ihren ES6 auf ein commonjs Ziel zu transpilieren

oder

  • Refactor mit CommonJS-Syntax.
178
Phil Ricketts

Falls dieser Fehler auftritt, hängt er möglicherweise auch damit zusammen, wie Sie die Javascript-Datei in Ihre HTML-Seite aufgenommen haben. Beim Laden von Modulen müssen Sie diese Dateien explizit als solche deklarieren. Hier ein Beispiel:

//module.js:
function foo(){
   return "foo";
}

var bar = "bar";

export { foo, bar };

Wenn Sie das Skript wie folgt einfügen:

<script src="module.js"></script>

Sie erhalten den Fehler:

Nicht erfasster Syntaxfehler: Unerwarteter Token-Export

Sie müssen die Datei mit einem Typattribut einschließen, das auf "module" festgelegt ist:

<script type="module" src="module.js"></script>

Und dann funktioniert es wie erwartet und Sie können Ihr Modul in ein anderes Modul importieren:

import { foo, bar } from  "./module.js";

console.log( foo() );
console.log( bar );
74
Wilt

Um ES6 zu verwenden, fügen Sie babel-preset-env hinzu.

und in deinem .babelrc:

{
  "presets": ["@babel/preset-env"]
}

Antwort dank @ghanbari Kommentar aktualisiert, um babel 7 anzuwenden.

8
Jalal

Installieren Sie die babel-Pakete @babel/core und @babel/preset, die ES6 in ein commonjs-Ziel konvertieren, da der Knoten js ES6-Ziele nicht direkt versteht.

npm install --save-dev @babel/core @babel/preset-env

Dann müssen Sie eine Konfigurationsdatei mit dem Namen .babelrc im Stammverzeichnis Ihres Projekts erstellen und diesen Code dort hinzufügen

{ "presets": ["@babel/preset-env"] }

0
YouBee