Start·Fehlermeldungen

node · JavaScript

Die Meldung

SyntaxError: Cannot use import statement outside a module

Was es bedeutet

Node oder der Browser hat diese Datei als CommonJS-Skript gelesen, und darin stand das ESM-Schlüsselwort import. Eine .js-Datei ist CommonJS, solange package.json nichts anderes erklärt; im Browser passiert dasselbe, wenn dem <script>-Tag type="module" fehlt. npm pkg set type=module erklärt das ganze Paket als ESM und behebt es, doch ab dann verlieren alle .js im Paket require und __dirname, sodass die übrigen CommonJS-Dateien mitwandern müssen — soll nur eine Datei umziehen, ist die Umbenennung in .mjs der engere und sicherere Schritt.

Die Lösung

npm pkg set type=module
Ausgegeben von
node
JavaScript
15

Browser- und Node-Fehler nennen meist, was kaputtging, aber nicht, warum der Wert so wurde — Sie haben undefined gelesen, es war keine Funktion, es war kein JSON — die Stelle zum Reparieren liegt also stromaufwärts der werfenden Zeile, und nur diese Zeile mit ?. und Standardwerten stillzulegen lässt dasselbe Problem weiter entfernt und in schwerer erkennbarer Gestalt wiederkehren.

Eine Fehlermeldung lesen

  • Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
  • Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
  • Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
  • Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
  • Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.

Häufige Fragen

Q. Was bedeutet „SyntaxError: Cannot use import statement outside a module“?

Node oder der Browser hat diese Datei als CommonJS-Skript gelesen, und darin stand das ESM-Schlüsselwort import. Eine .js-Datei ist CommonJS, solange package.json nichts anderes erklärt; im Browser passiert dasselbe, wenn dem <script>-Tag type="module" fehlt. npm pkg set type=module erklärt das ganze Paket als ESM und behebt es, doch ab dann verlieren alle .js im Paket require und __dirname, sodass die übrigen CommonJS-Dateien mitwandern müssen — soll nur eine Datei umziehen, ist die Umbenennung in .mjs der engere und sicherere Schritt.

Q. Wie behebe ich das?

npm pkg set type=module — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.

Q. Welches Werkzeug gibt das aus?

node. Es gehört zu JavaScript, und die Meldung hat 8 Wörter.

Verwandte Fehler