我完全理解错误的含义。我的问题是什么是“伪装令牌”?我从未听说过,这不是我的代码中的内容。我在整个代码库中搜索了“伪装”一词,但没有命中,因此它一定是Angular内部的内容。这到底是什么?我每天都会收到数十次此错误,但我不知道它是什么。我正在运行Angular 7。
TypeError: Cannot read property 'disguiseToken' of undefined
at getOwnPropertyDescriptor (eval at (:1:38695), :560:24)
at Function.Object.getOwnPropertyDescriptor (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:39700)
at a (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:1075141)
at https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1533
at Object.26NW (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1805)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at Module.L6id (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:62181)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:914848
at t.invoke (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8160)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14076)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:13634)
at https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14864
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8844)
at Object.onInvokeTask (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:467756)
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8765)
at e.runTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:4026)
at g (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:11111)
答案 0 :(得分:3)
陪审团仍然在那里。只是总结当前状态和评论:
disguise
+ eval
+用户在页面上没有发现明显的错误+无法找到字符串。所有这些都暗示了恶意npm软件包的可能性。由于代码可能很混乱,因此搜索disguiseToken
不会产生任何结果。您只需运行npm install
就可以了。有时甚至是受人尊敬的软件包也会被劫持。
但是还有其他可能性
https
,仍然有可能,至少在某些国家(哈萨克斯坦)是这样。或者也许是公司网络。似乎已经弄清楚了问题出在自己的代码库之外。但这从一开始就是众所周知的。
该问题似乎来自Proxy
内部。但这不是必需品,所以从我们现在在问题中可以看到:
Proxy
的事实并不意味着该Proxy
会引发错误。target
就阻止了代理的创建,所以您应该不会看到错误。Proxy
该怎么办?一些悬而未决的问题:
try-catch
用于日志,它将仅捕获代码内部及其相关性中的错误(表示恶意的npm软件包)。window.onerror
-它可以从某些注入脚本(设置了window.onerror
处理程序后抛出的那些脚本)中捕获一些错误。 MutationObserver
可以捕获仅在设置后才注入的脚本,并且只能捕获从页面上已经存在的脚本注入的脚本。这又意味着-在代码依赖项内部。它不会捕获 MiM 脚本,因为在这种情况下,用户加载了一个脚本已经存在的页面。因此,您可能也应该登录<head>
。页面加载后。并在错误。 (但是脚本也可以在HTML末尾或其他地方注入)。我认为我们没有进行任何更改来解决此问题,它已关闭,因为它已停止在Sentry中使用。我猜供应商更新解决了根本问题。