webpack抓虫,分号继续引起的 xxx is not a function问题
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文的写作要翻两篇很久之前的两篇文章,一个分号引起的nodejs
的惊天大bug
。现在这个问题在调试react
项目的时候,出现的。但是,引起问题的原因可和react
没有什么关系。
苏南大叔的程序如此灵动博客,记录苏南大叔和计算机代码的故事。测试环境:node@16.14.2
,webpack@5.0.0
。
现象描述
错误提示信息:
Uncaught TypeError: console.log(...) is not a function
但是,console.log(...)
怎么可能会不是一个function
呢?经过多次试验,这个错误提示信息还可能是:
xxx is not a function
xxx
可以指代任何代码。
webpack
的bug
这个问题还需要回顾到下面的文章:
一般来说,js
代码中的分号是可有可无的。但是,在()()
这种表达前面,如果涉及到代码合并的话,需要在最前面添加一个分号。主要的原因是括号的解释可能具有歧义。在前面加个分号,就能避免这种错误的解释。
这种惊天大bug
的引起只能是先合并代码了(或者说删除回车换行了)。所以,最终苏南大叔把锅定在了webpack
上。只要在webpack
的代码中,写()()
的匿名函数类似代码。而前面一行代码的最后没有写分号的话,就会出现xxx is not a function
的错误提示信息。
解决方案
解决方案就是在执行匿名函数的时候,在前面都加上一个分号。例如:
;()()
或者在xxx is not a function
那一行最后,加个分号。例如:
console.log("加个分号就好了");
结束语
这个锅也只能算在webpack
上,webpack
也算个大冤种了。就是执行了一个删除回车换行的操作,就把本来正常的代码给合并出毛病来了。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。