问题描述
我在使用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
到我的仓库的完整克隆,其中在破裂之前我还没有提出任何建议),我我没想到如果有人想鸣叫,将不胜感激。
更新:
我在新计算机上尝试了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