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

使用brain.js时出现document is not defined错误的解决咨询

解决Node.js环境中document is not defined报错的方案

嘿,这个问题我熟!你碰到的ReferenceError: document is not defined其实是环境不匹配导致的——document是浏览器专属的DOM(文档对象模型)API,Node.js作为服务器端运行环境,本身并不提供这个对象,所以直接用Node.js运行包含DOM操作的代码肯定会报错。

下面给你两个针对性的解决办法,按需选择:

方案一:在浏览器环境中运行代码(推荐,适合前端场景)

如果你的代码是要和页面交互(比如操作输入框),最直接的方式是把JS代码和HTML页面绑定,让浏览器来执行:

  1. 在你的项目目录下创建一个index.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <!-- 这里放你需要操作的DOM元素,比如示例里的input -->
  <input type="text" id="userInput">
  <!-- 引入你的JS文件 -->
  <script src="./js/index.js"></script>
</body>
</html>
  1. 用VS Code的Live Server插件打开这个HTML文件(右键选择"Open with Live Server"),浏览器会自动加载页面并执行JS代码,此时document对象就能正常访问了。

方案二:在Node.js中模拟DOM环境(适合测试/后端场景)

如果确实需要在Node.js环境下运行这段代码(比如做自动化测试),可以用jsdom包来模拟浏览器的DOM环境:

  1. 先安装jsdom依赖:
npm install jsdom
  1. 在你的index.js最开头添加以下代码,手动创建全局的document对象:
const { JSDOM } = require('jsdom');
// 创建一个包含input元素的模拟DOM环境
const dom = new JSDOM('<!DOCTYPE html><input id="userInput">');
// 把模拟的document挂载到全局对象上
global.document = dom.window.document;

// 接下来写你原来的代码
const input = document.querySelector("input");
// ...你的brain.js相关逻辑

这样Node.js就能识别document对象,代码可以正常运行了。

补充一句:brain.js本身是支持Node.js和浏览器双环境的,但你代码里的DOM操作部分是浏览器专属的,所以得根据你的实际场景选择合适的运行方式~

内容的提问来源于stack exchange,提问作者Gleb Ger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:20