SyntaxError: unterminated string literal
Message
SyntaxError: Unterminated string constant (Edge) SyntaxError: unterminated string literal (Firefox)
Type d'erreur
Quel est le problème ?
Une chaîne de caractères (String
) n'est pas bien délimitée quelque part. Les littéraux de chaînes de caractères doivent être délimités par des simples quotes (') ou par des doubles quotes ("). Les séquences d'échappement permet de représenter dans ces chaînes de caractères. Pour réparer cette erreur :
- Vérifiez que la chaîne est bien délimitée au début et à la fin par des doubles quotes ou par des simples quotes,
- Vérifiez que les caractères spéciaux de la chaîne ont bien été échappés,
- Vérifiez que le littéral est bien découpé pour gérer plusieurs lignes (si c'est le cas).
Exemples
Gérer plusieurs lignes
En JavaScript, on ne peut pas écrire une chaîne simple sur plusieurs lignes comme ceci :
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
Pour écrire une chaîne sur plusieurs lignes, on pourra utiliser :
- L'opérateur +,
- Une barre oblique inversée ("\")
- Des littéraux de gabarits
Voici la première variante avec l'opérateur de concaténation :
var longString =
"This is a very long string which needs " +
"to wrap across multiple lines because " +
"otherwise my code is unreadable.";
Sinon, on peut utiliser une barre oblique inversée à la fin de chaque ligne pour indiquer qu'elle continue sur la ligne suivante. Attention, il faudra qu'il n'y ait aucun espace ou autre caractère après la barre oblique (il peut bien entendu y avoir un saut de ligne) :
var longString =
"This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";
On pourra également utiliser les littéraux de gabarits qui sont pris en charge par les environnement ECMAScript 2015 :
var longString = `This is a very long string which needs
to wrap across multiple lines because
otherwise my code is unreadable.`;