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

Der JavaScript-Fehler "string literal contains an unescaped line break" tritt auf, wenn irgendwo ein nicht abgeschlossenes String-Literal vorhanden ist. String-Literale müssen von einfachen (') oder doppelten (") Anführungszeichen umschlossen sein und dürfen nicht über mehrere Zeilen hinweg aufgeteilt werden.

Nachricht

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

Fehlertyp

Was ist schiefgelaufen?

Es gibt irgendwo ein nicht abgeschlossenes String-Literal. String-Literale müssen von einfachen (') oder doppelten (") Anführungszeichen umschlossen werden. JavaScript macht keinen Unterschied zwischen einfach- und doppelt-quotierten Strings. Escape-Sequenzen funktionieren in Strings, die entweder mit einfachen oder doppelten Anführungszeichen erstellt wurden. Um diesen Fehler zu beheben, überprüfen Sie:

  • ob Sie Anfangs- und Endanführungszeichen (einfach oder doppelt) für Ihr String-Literal haben,
  • ob Sie Ihr String-Literal korrekt escaping,
  • ob Ihr String-Literal nicht über mehrere Zeilen hinweg aufgeteilt ist.

Beispiele

Mehrere Zeilen

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

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

Verwenden Sie stattdessen 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 können das Backslash-Zeichen ("\") am Ende jeder Zeile verwenden, um anzuzeigen, dass der String in der nächsten Zeile fortgesetzt wird. Stellen Sie sicher, dass nach dem Backslash kein Leerzeichen oder ein anderes Zeichen (außer einem Zeilenumbruch) oder als Einzug vorhanden ist; andernfalls funktioniert es nicht. Diese Form sieht folgendermaßen 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