SyntaxError: string literal enthält einen nicht-escaped Zeilenumbruch

Der JavaScript-Fehler "string literal enthält einen nicht-escaped Zeilenumbruch" tritt auf, wenn irgendwo ein nicht abgeschlossenes String-Literal vorhanden ist. String-Literale müssen durch einfache (') oder doppelte (") Anführungszeichen eingeschlossen werden und können nicht über mehrere Zeilen hinweg verteilt werden.

Meldung

SyntaxError: Invalid or unexpected token (V8-based)
SyntaxError: '' string literal contains an unescaped line break (Firefox)
SyntaxError: Unexpected EOF (Safari)

Fehlerart

Was ist schiefgelaufen?

Es gibt irgendwo ein nicht abgeschlossenes String-Literal. String-Literale müssen durch einfache (') oder doppelte (") Anführungszeichen eingeschlossen sein. JavaScript macht keinen Unterschied zwischen einfach- und doppelt-gequoteten Zeichenfolgen. Escape-Sequenzen funktionieren in Zeichenfolgen, die entweder mit einfachen oder doppelten Anführungszeichen erstellt wurden. Um diesen Fehler zu beheben, prüfen Sie, ob:

  • Sie sowohl ein öffnendes als auch ein schließendes Anführungszeichen (einfach oder doppelt) für Ihr String-Literal haben,
  • Sie Ihr String-Literal korrekt escaped haben,
  • Ihr String-Literal nicht über mehrere Zeilen verteilt ist.

Beispiele

Mehrere Zeilen

Sie können einen String in JavaScript nicht wie folgt über mehrere Zeilen verteilen:

js
const longString = "This is a very long string which needs
                    to wrap across multiple lines because
                    otherwise my code is unreadable.";
// SyntaxError: unterminated string literal

Stattdessen verwenden Sie den + Operator, einen Backslash oder Template-Literale. Die Variante mit dem + Operator sieht so aus:

js
const longString =
  "This is a very long string which needs " +
  "to wrap across multiple lines because " +
  "otherwise my code is unreadable.";

Oder Sie verwenden das Backslash-Zeichen ("\") am Ende jeder Zeile, um anzuzeigen, dass der String in der nächsten Zeile fortgesetzt wird. Stellen Sie sicher, dass sich kein Leerzeichen oder ein anderes Zeichen nach dem Backslash befindet (außer für einen Zeilenumbruch) oder als Einrückung; andernfalls funktioniert es nicht. Diese Form sieht so aus:

js
const longString =
  "This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";

Eine weitere Möglichkeit ist die Verwendung von Template-Literalen.

js
const longString = `This is a very long string which needs 
to wrap across multiple lines because 
otherwise my code is unreadable.`;

Siehe auch