You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js运行JS时报ReferenceError: document is not defined错误如何解决

报错根因

document是浏览器专属的DOM API全局对象,仅在浏览器运行环境中存在,Node.js作为服务端JavaScript运行环境,默认未提供该全局对象,因此执行包含DOM操作的代码时就会触发该报错。
你此前用node index.js可正常运行,是因为之前的代码中没有调用document相关的DOM操作逻辑,近期新增了获取页面元素的关联代码后才触发报错。

修复方案

根据你的开发场景选择对应方案即可:

  • 方案1(适配网页游戏的开发需求,最推荐):你开发的是网页端二十一点游戏,JS代码本身应该嵌入HTML文件在浏览器环境运行,不需要用Node执行。只需在对应HTML文件中引入你的JS文件:<script src="./index.js"></script>,之后直接在浏览器打开HTML文件,或用VS Code的Live Server插件启动本地静态服务访问即可。
  • 方案2(仅需在Node端测试游戏核心逻辑):将DOM交互逻辑和游戏核心运算逻辑拆分,剥离纯逻辑部分单独测试,注释或移除所有document、window等浏览器专属API的调用代码。
  • 方案3(需要在Node端模拟DOM环境):安装jsdom类库模拟浏览器DOM环境,手动注入全局document对象,示例代码如下:
// 先执行npm install jsdom安装依赖
const { JSDOM } = require('jsdom');
const dom = new JSDOM('<!DOCTYPE html><div id="message-el"></div>');
global.document = dom.window.document;

// 后续再执行原本的DOM操作代码即可正常运行
let messageEl = document.getElementById("message-el");

内容的提问来源于stack exchange,提问作者João Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:15:07