ESLint报错:'document' is not defined. [no-undef] 求助
解决ESLint报错:'document' is not defined. [no-undef]
嘿,我完全懂你遇到的困扰——ESLint这套规则有时候会对浏览器里默认存在的全局变量“认生”,比如document和console,它不知道这些是浏览器环境自带的“内置变量”,所以就抛出了no-undef的错误。别担心,这不是你代码的逻辑问题,只是ESLint的配置没跟上你的运行环境而已。
给你几个简单易懂的解决办法,选一个适合你的就行:
方法一:全局配置ESLint的运行环境
这是一劳永逸的办法,以后所有文件都不会再报这类错:
- 在你的项目根目录下创建一个名为
.eslintrc.json的文件(如果已经有这个文件就直接打开) - 在文件里写入以下内容:
{ "env": { "browser": true, "es2021": true } }
其中"browser": true就是明确告诉ESLint:“我是在浏览器环境写代码哦,那些浏览器自带的全局变量都是合法的!”
如果你的项目是用package.json管理的,也可以直接在package.json里添加这段配置:
"eslintConfig": { "env": { "browser": true } }
方法二:在单个文件里声明全局变量
如果你不想改动全局配置,只想让当前文件不再报错,可以在代码的最顶部加一行注释:
/* global document, console */
这样ESLint就会明白这两个变量是全局可用的,不会再提示“未定义”了。
额外小说明
你提到换成console.log也报错,其实道理完全一样——console也是浏览器(以及Node环境)的全局变量,ESLint默认没开启对应的环境识别,所以才会触发同样的错误。上面的两种方法同样能解决这个问题。
内容的提问来源于stack exchange,提问作者Nowondering
相关产品推荐
相关产品推荐

