未捕获的语法错误:在严格模式下不允许\ 8和\ 9

问题描述

我在使用Angular v7的项目上工作,直到今天才在运行时遇到此错误Uncaught SyntaxError: \8 and \9 are not allowed in strict mode.,并不会消失

我已经能够将其追溯到我使用的angular-essential-select模块(2.0.12),目前无法替换。 我尚未修改tsconfig.jsonangular.json,也没有启用严格模式。

问题是我的应用可以正确编译,但由于此错误而无法正常工作。

我已经尝试了所有可能想到的事情(从简单的npm ci到我的仓库的完整克隆,其中在破裂之前我还没有提出任何建议),我我没想到如果有人想鸣叫,将不胜感激。


更新
我在新计算机上尝试了repo克隆:这个问题在我的另一台计算机上没有解决(这是个好主意)。

我最好的猜测是,无论出于何种原因都更新了全局npm软件包,并导致此混乱或某些npm高速缓存恶作剧。


更新#2:

我只在Google Chrome上进行过检查,但是Richard Hogg的评论使我在Firefox上进行了检查:它工作正常。
猜猜既然Google Chrome和MS Edge都在同一个Chromium内核上运行,那么Chromium更新可能是一个问题...回到弄清楚这件事!

解决方法

我在工作中遇到了同样的问题,该应用程序运行良好,然后在更新VScode后出现了,但我感觉它来自浏览器,因为它可与MS Edge一起使用,但现在不起作用完全很奇怪..如果发现问题,请发布。

编辑:所以我们或我的同事现在找到了解决方法。这是添加noImplicitUseStrict,他在我的二手信息中解释说,浏览器已将严格模式更新为严格!在浏览器允许之前,现在必须将这行代码添加到tsconfig.json中,如果这样做可以帮助您,否则非常抱歉,祝您好运!

“严格”:false, “ noImplicitUseStrict”:是,

,

因此,正如我在问题中所猜到的那样,造成我问题的罪魁祸首确实是angular-essential-select模块。在其CSS定义中,它包含有问题的\9

卸下模块可解决此问题。

关于为什么Uncaught SyntaxError: \8 and \9 are not allowed in strict mode.来自CSS“ hack”,告诉浏览器在IE 8/9/10/11中分别使用特定的CSS规则(分别是:\8\9\10\11)。
我认为这是因为最新的Chromium版本不再支持此CSS hack,使用它的模块也已损坏。

我建议检查错误所指向的行(即Angular中的vendor.js:10000),找出导致该问题的模块并将其替换为较新的模块。


如果您需要以保留有问题的模块并且不关心严格模式,请查看Richard Hogg's answer