SyntaxError: unterminated string literal

Fehlermeldung

SyntaxError: unterminated string literal

Fehlertyp

Was ist falsch gelaufen?

Es gibt irgendwo einen nicht beendeten String. Stringliterale m├╝ssen mit einfachen (') oder doppelten (") Anf├╝hrungszeichen umschlossen sein. JavaScript unterscheidet nicht zwischen Strings, die mit einfachen oder doppelten Anf├╝hrungszeichen umschlossen sind. Maskierte Sequenzen funktionieren in Strings mit einfachen und doppelten Anf├╝hrungszeichen. Um den Fehler zu beheben, sollte folgendes ├╝berpr├╝ft werden:

  • Es gibt ├Âffnende und schlie├čende Anf├╝hrungszeichen (einfache oder doppelte) f├╝r alle Stringliterale,
  • Stringliterale sind richtig maskiert,
  • Stringliterale funktionieren richtig ├╝ber mehrere Zeilen, wenn es solche gibt.

Beispiele

MehrereZeilen

Man kann Strings nicht ├╝ber mehrere Zeilen in JavaScript schreiben:

var 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 muss ein + Operator, ein Backslask oder ein Templateliteral eingesetzt werden. Die + Operator Variante sieht wie folgt aus:

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

Oder man benutzt ein Backslash Zeichen ("\") am ende jeder Zeile, um anzudeuten, dass der String in der n├Ąchsten Zeile weiter geht. Man muss sicherstellen, dass keine Leerzeichen oder andere Zeichen nach dem Backslash stehen (ausgenommen der Zeilenumbruch) oder als Einr├╝ckung, ansonsten wird es nicht funktionieren. Diese Form sieht wie folgt aus:

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

Eine andere M├Âglichkeit ist der Einsatz von Templateliteralen, welche in ECMAScript 2015 Umgebungen unterst├╝tzt werden:

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

Siehe auch