Uncaught SyntaxError: \8 и \9 не разрешены в строгом режиме

Я работаю над проектом с использованием Angular v7 и только сегодня столкнулся с этой ошибкой Uncaught SyntaxError: \8 and \9 are not allowed in strict mode. во время выполнения, которая не исчезнет.

Я смог отследить его до модуля angular-essential-select (2.0.12), который я использую и не могу заменить в данный момент. Я не модифицировал свой tsconfig.json или angular.json, и у меня определенно не включен строгий режим.

Проблема в том, что мое приложение компилируется правильно, но не работает из-за этой ошибки.

Я перепробовал все, что мог придумать (от простого npm ci до полного клона моего репозитория, на который я ничего не нажимал прямо перед тем, как он сломался), и у меня нет идей. Если кто-то хочет присоединиться, это будет оценено.


Обновление:
я попробовал создать клон репозитория на новом компьютере: проблема не распространяется на другой мой компьютер (это хороший момент).

Я предполагаю, что глобальный пакет npm был обновлен по какой-либо причине и вызывает этот беспорядок или какие-то махинации с кешем npm.


Обновление №2:

Я проверял только Google Chrome, но комментарий Ричарда Хогга заставил меня проверить Firefox: он работает нормально.
Думаю, поскольку и Google Chrome, и MS Edge работают на одном и том же ядре Chromium, это может быть проблемой с Chromium. обновление... Вернемся к выяснению этого!


person Askirkela    schedule 09.10.2020    source источник
comment
Вероятно, проблема с восьмеричным числом. Вместо этого следует использовать \10 и \11. Хотя я понятия не имею, не надо ли было удваивать обратную косую черту: \\1, \\2, ... \\8, \\9. Зависит от использования. Можно попробовать и \x8 (шестнадцатеричное). В строках правильно?   -  person Joop Eggen    schedule 09.10.2020
comment
Спасибо за вклад, но, похоже, это добавлено автоматически (или уже существовало в модуле, но раньше не вызывало никаких проблем). Я добавлю небольшое обновление к моему вопросу   -  person Askirkela    schedule 10.10.2020


Ответы (2)


У меня такая же проблема на работе, приложение работало нормально, а затем оно появилось после того, как я обновил VScode, но я чувствую, что оно исходит из браузера, потому что оно работало с MS Edge, а теперь оно не работает вообще, очень странно .. если вы нашли проблему, напишите об этом.

Редактировать: Итак, мы или мой коллега нашли исправление на данный момент.. это было добавить noImplicitUseStrict, он объяснил в моей плохой информации из вторых рук, что браузеры обновили строгий режим до действительно строгого! до того, как браузер просто разрешил это, теперь вам нужно добавить эту строку кода в tsconfig.json, если это поможет, в противном случае извините и удачи!

строгий: ложь, noImplicitUseStrict: правда,

person Richard Hogg    schedule 12.10.2020
comment
Не могли бы вы попробовать обслуживать свое приложение и открыть его с помощью Firefox? Я обновил свой вопрос, так как он работает для меня (пока нет исправления, но сужение — это хорошо) - person Askirkela; 12.10.2020
comment
Не знаю, просто пытаюсь посоветовать: при обновлении vscode обновляет и версию ts, в правом нижнем углу. Как насчет того, чтобы сделать его плохим из нескольких версий? - person Cristian Traìna; 12.10.2020
comment
PS. добавьте свои данные об отладке и удалите первую и последнюю часть, иначе ваш ответ будет помечен как «У меня тоже есть эта проблема». - person Cristian Traìna; 12.10.2020

Итак, как я догадался по моему вопросу, виновником моей проблемы действительно был модуль angular-essential-select. В своем определении css он содержит проблемный \9.

Удаление модуля решает проблему.

Что касается почему, Uncaught SyntaxError: \8 and \9 are not allowed in strict mode. возникает из-за взлома CSS, чтобы указать браузеру использовать определенное правило CSS, если в IE 8/9/10/11 (соответственно: \8, \9, \10 и \11) .
Я думаю, это потому, что последняя сборка Chromium больше не поддерживает этот CSS-хак, модули, использующие его, ломаются.

Я бы посоветовал проверить строку, на которую указывает ошибка (например, vendor.js:10000 в Angular), чтобы выяснить, какой модуль вызывает проблему, и заменить указанный модуль более новым.


Если вам нужно сохранить проблемный модуль и не заботиться о строгом режиме, ознакомьтесь с ответом Ричарда Хогга< /а>

person Askirkela    schedule 12.10.2020