VSCode中出现ReferenceError: document is not defined的调试问题求助
解决
ReferenceError: document is not defined问题 问题根源
你代码里用到的document是浏览器专属对象,用来操作网页DOM元素,但你当前是在Node.js环境中运行代码——Node.js是后端运行环境,不存在document这个对象,所以才会报错。和VSCode重装、更新软件没关系,核心是代码运行环境搞错了。
具体解决方案
如果你的代码是用来操作网页的前端代码:
- 把代码放到HTML文件的
<script>标签里,直接用浏览器打开这个HTML文件就能运行,比如:<!DOCTYPE html> <html> <body> <script> // 这里写你用到document的代码 const testDiv = document.createElement('div'); testDiv.textContent = '测试内容'; document.body.appendChild(testDiv); </script> </body> </html> - 用VSCode调试前端代码的话,先装个
Live Server插件,右键HTML文件选择“Open with Live Server”,再在VSCode调试面板选Launch Chrome against localhost配置,就能正常调试了。
- 把代码放到HTML文件的
如果是不小心在Node.js里写了前端代码:
- 别用
node 你的文件名.js命令运行这类代码,换成上面的前端方式运行。 - 要是非要在Node里模拟浏览器环境(新手不推荐先折腾这个),可以先安装
jsdom包:
然后在代码开头加这段:npm install jsdom
这样Node环境里就有const { JSDOM } = require('jsdom'); const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>'); global.document = dom.window.document;document对象了,但只适合特殊场景。
- 别用
关键提醒
先搞清楚**前端代码(浏览器运行)和后端代码(Node.js运行)**的区别:前端代码才能用document、window这些浏览器专属对象,后端代码不行。
内容的提问来源于stack exchange,提问作者Helton Oliveira
相关产品推荐
相关产品推荐

