Uncaught TypeError: c.querySelectorAll is not a function

Viewed 2315

In the vue.js application I'm working on, I suddenly get an error in Chrome inspector:

Uncaught TypeError: c.querySelectorAll is not a function

It always stops the execution. When I can continue and it doesn't seem to cause any additional problems. But I can't work like this if I have to hit continue several times after each click.

In the debugger I can see that c is a variable referencing a comment in the DOM. It affects different comments. But all comments have in common that they are inserted by vue.js a placeholders for dynamic elements.

On the stack trace, there is hardly any code of mine (see example below).

(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)

What's the cause? How can I fix it? Is it related to the latest vue.js update?

2 Answers

This GitHub issue tipped me off. It's not related to vue.js nor webpack nor Angular. It's caused by Ghostery.

Turn Ghostery off for your web page and the problem goes away.

In the debugger I can see that c is a variable referencing a comment in the DOM

Well, that's the problem. Comment nodes don't have querySelectorAll. Text nodes don't either. It doesn't make sense for them. Only documents and Element nodes have the query functions.

Related