未捕获的类型错误:c.querySelectorAll不是一个函数。

10

在我正在开发的vue.js应用程序中,我突然在Chrome检查器中遇到一个错误:

Uncaught TypeError: c.querySelectorAll is not a function

它总是停止执行。当我可以继续并且似乎不会引起任何其他问题时。但如果每次点击后都要按继续,我就无法这样工作。

在调试器中,我可以看到c是一个变量,引用DOM中的注释。它影响不同的注释。但是所有注释都有一个共同点,它们是由vue.js插入的动态元素的占位符。

在堆栈跟踪中,我的代码几乎没有(请参见下面的示例)。

(anonymous) (content_script_bundle.js:16)
childList (async)
appendChild (vue.runtime.esm.js?2b0e:5711)
insert (vue.runtime.esm.js?2b0e:6036)
createComponent (vue.runtime.esm.js?2b0e:5980)
createElm (vue.runtime.esm.js?2b0e:5919)
addVnodes (vue.runtime.esm.js?2b0e:6100)
updateChildren (vue.runtime.esm.js?2b0e:6227)
patchVnode (vue.runtime.esm.js?2b0e:6313)
patch (vue.runtime.esm.js?2b0e:6476)
Vue._update (vue.runtime.esm.js?2b0e:3942)
updateComponent (vue.runtime.esm.js?2b0e:4060)
get (vue.runtime.esm.js?2b0e:4473)
run (vue.runtime.esm.js?2b0e:4548)
flushSchedulerQueue (vue.runtime.esm.js?2b0e:4304)
(anonymous) (vue.runtime.esm.js?2b0e:1980)
flushCallbacks (vue.runtime.esm.js?2b0e:1906)
Promise.then (async)
timerFunc (vue.runtime.esm.js?2b0e:1933)
nextTick (vue.runtime.esm.js?2b0e:1990)
queueWatcher (vue.runtime.esm.js?2b0e:4396)
update (vue.runtime.esm.js?2b0e:4538)
notify (vue.runtime.esm.js?2b0e:730)
reactiveSetter (vue.runtime.esm.js?2b0e:1055)
(anonymous) (Workspace.vue?7337:142)
Promise.then (async)
(anonymous) (Workspace.vue?7337:139)
loadPanel (Workspace.vue?7337:138)
mounted (Workspace.vue?7337:112)
invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
callHook (vue.runtime.esm.js?2b0e:4213)
insert (vue.runtime.esm.js?2b0e:3139)
invokeInsertHook (vue.runtime.esm.js?2b0e:6340)
patch (vue.runtime.esm.js?2b0e:6559)
Vue._update (vue.runtime.esm.js?2b0e:3942)
updateComponent (vue.runtime.esm.js?2b0e:4060)
get (vue.runtime.esm.js?2b0e:4473)
run (vue.runtime.esm.js?2b0e:4548)
flushSchedulerQueue (vue.runtime.esm.js?2b0e:4304)
(anonymous) (vue.runtime.esm.js?2b0e:1980)
flushCallbacks (vue.runtime.esm.js?2b0e:1906)
Promise.then (async)
timerFunc (vue.runtime.esm.js?2b0e:1933)
nextTick (vue.runtime.esm.js?2b0e:1990)
queueWatcher (vue.runtime.esm.js?2b0e:4396)
update (vue.runtime.esm.js?2b0e:4538)
notify (vue.runtime.esm.js?2b0e:730)
reactiveSetter (vue.runtime.esm.js?2b0e:1055)
(anonymous) (vue-router.esm.js?8c4f:2555)
(anonymous) (vue-router.esm.js?8c4f:2554)
updateRoute (vue-router.esm.js?8c4f:2013)
(anonymous) (vue-router.esm.js?8c4f:1891)
(anonymous) (vue-router.esm.js?8c4f:2000)
step (vue-router.esm.js?8c4f:1730)
step (vue-router.esm.js?8c4f:1737)
runQueue (vue-router.esm.js?8c4f:1741)
(anonymous) (vue-router.esm.js?8c4f:1995)
step (vue-router.esm.js?8c4f:1730)
(anonymous) (vue-router.esm.js?8c4f:1734)
(anonymous) (vue-router.esm.js?8c4f:1980)
(anonymous) (vue-router.esm.js?8c4f:1808)
iterator (vue-router.esm.js?8c4f:1959)
step (vue-router.esm.js?8c4f:1733)
step (vue-router.esm.js?8c4f:1737)
step (vue-router.esm.js?8c4f:1737)
runQueue (vue-router.esm.js?8c4f:1741)
confirmTransition (vue-router.esm.js?8c4f:1988)
transitionTo (vue-router.esm.js?8c4f:1890)
push (vue-router.esm.js?8c4f:2200)
push (vue-router.esm.js?8c4f:2581)
handler (vue-router.esm.js?8c4f:458)
invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
invoker (vue.runtime.esm.js?2b0e:2179)
original._wrapper (vue.runtime.esm.js?2b0e:6911)

是什么原因导致的?我该如何解决?这是否与最近的vue.js更新有关?


没有代码可见? - xianshenglu
我还没有成功地分离出与此相关的任何代码...正如您在堆栈跟踪中看到的那样,它全部都是vue.js。 - Ringo Store
1
@RingoStore - 请以文本形式发布文本信息(例如堆栈跟踪),而不是文本的图片。(图片可能是附属品。)原因:http://meta.stackoverflow.com/q/285551/157247 - T.J. Crowder
你知道如何将Chrome的检查器中的堆栈跟踪复制为文本吗?我找不到方法。 - Ringo Store
谢谢。我一直在右键单击堆栈跟踪的错误行。 - Ringo Store
显示剩余2条评论
2个回答

40
这个GitHub问题让我知道了。它与vue.jswebpackAngular无关,而是由Ghostery引起的。
关闭Ghostery扩展程序,该问题就会消失。

1
是的,就是这样。我已经安装了Ghostery。我将该网站标记为可信,并且现在它正常工作了。非常感谢。 - Ringo Store
希望有人已经向他们报告了这件事! - T.J. Crowder
1
在此处与他们提交了一张工单 here - Dan
我现在无法访问他们的票据...但我确实收到了一封电子邮件,说他们会在下一个更新中修复这个问题。Ghostery Response - Dan

3
在调试器中,我可以看到c是一个引用DOM中评论的变量。
问题就在这里。Comment节点没有querySelectorAllText节点也没有。这对它们来说是没有意义的。只有文档Element节点具有查询函数。

我不使用 querySelectorAll。那么这是 vue.js 的一个 bug 吗? - Ringo Store
@RingoStore - 我怀疑这不是服务器的问题,更可能是使用Vue.js的代码出了问题。 - T.J. Crowder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接