SyntaxError: unterminated string literal(незавершённый строковый литерал)

Сообщение

SyntaxError: незадействованная строковая константа (Edge)
SyntaxError: незадействованный строковый литерал (Firefox)

Тип ошибки

Что пошло не так?

Где-то есть unterminated String. Строковые литералы должны быть заключены в одинарные (') или двойные (") кавычки. JavaScript не делает различий между строками в одинарных и двойных кавычках. Escape-последовательности работают в строках, созданных с одинарными или двойными кавычками. Чтобы исправить эту ошибку, проверьте:

  • у вас есть открывающие и закрывающие кавычки (одинарные или двойные) для строкового литерала,
  • вы правильно экранировали строковый литерал,
  • строковый литерал не разбивается на несколько строк.

Примеры

Несколько строк

Вы не можете разделить строку на несколько строк, как в JavaScript:

var longString = 'Это очень длинная строка, которая нуждается
                  перенос через несколько строк, потому что
                  в противном случае мой код нечитаем.";
// SyntaxError: незавершённый строковый литерал

Вместо этого используйте оператор+, обратную косую черту или литералы шаблона. Вариант оператора + выглядит следующим образом:

var longString = ' Это очень длинная строка, которая нуждается в ' +
                 'чтобы обернуть через несколько строк, потому что' +
                 -иначе мой код будет нечитабелен.";

Или можно использовать символ обратной косой черты ("\") в конце каждой строки, чтобы указать, что строка будет продолжаться в следующей строке. Убедитесь, что после обратной косой черты нет пробелов или других символов (кроме разрыва строки) или отступа; в противном случае это не сработает. Эта форма выглядит следующим образом:

var longString = 'Это очень длинная строка, которая нуждается \
                переносе через несколько строк, потому что \
                  в противном случае мой код нечитаем.";

Ещё одна возможность-использовать шаблонные литералы, поддерживаемые в средах ECMAScript 2015:

var longString = `Это очень длинная строка, которая нуждается
                  в переносе через несколько строк, потому что
                  в противном случае мой код нечитаем.`;

Смотрите также