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

Node.js报错ReferenceError: document is not defined及localhost连接问题求助

解决Node.js中ReferenceError: document is not defined错误及连接本地服务器方法

先理清错误根源

document是浏览器环境特有的DOM对象,Node.js是服务器端JavaScript运行环境,本身不存在浏览器的DOM API,所以直接在Node.js里运行包含document的代码必然报错——这和Node.js是否连接服务器完全无关。

解决document is not defined的两种场景

场景1:代码是前端浏览器代码

别用Node.js直接运行这类代码,把代码嵌入HTML文件,用浏览器打开HTML就能正常运行(浏览器会提供document对象)。

场景2:必须在Node.js环境用DOM API

可以用jsdom库模拟浏览器DOM环境:

  1. 安装依赖:
    npm install jsdom
    
  2. 在代码中引入并配置:
    const { JSDOM } = require('jsdom');
    // 模拟一个空的HTML文档
    const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>');
    // 将document挂载到全局
    global.document = dom.window.document;
    
    // 之后就能正常使用document相关方法了
    const div = document.createElement('div');
    console.log(div);
    

让Node.js连接/监听127.0.0.1:300

情况1:搭建本地服务监听127.0.0.1:300

以Express框架为例(最常用的Node.js web框架):

  1. 安装Express:
    npm install express
    
  2. 编写服务代码(比如命名为server.js):
    const express = require('express');
    const app = express();
    const port = 300;
    
    // 定义一个简单的路由
    app.get('/', (req, res) => {
      res.send('服务已在127.0.0.1:300运行');
    });
    
    // 启动服务,绑定127.0.0.1:300
    app.listen(port, '127.0.0.1', () => {
      console.log(`服务地址:http://127.0.0.1:${port}`);
    });
    
  3. 运行服务:
    node server.js
    

此时你的Node.js服务就已经连接并监听127.0.0.1:300了,打开浏览器访问该地址就能看到返回内容。

情况2:作为客户端连接127.0.0.1:300的服务

如果是要让Node.js作为请求方连接到本地300端口的服务,用Node.js内置的http模块即可:

const http = require('http');

const requestOptions = {
  hostname: '127.0.0.1',
  port: 300,
  path: '/',
  method: 'GET'
};

const req = http.request(requestOptions, (res) => {
  console.log(`服务返回状态码:${res.statusCode}`);
  // 接收服务返回的数据
  res.on('data', (chunk) => {
    console.log(`返回内容:${chunk}`);
  });
});

// 处理请求错误
req.on('error', (err) => {
  console.log(`请求失败:${err.message}`);
});

// 发送请求
req.end();

内容的提问来源于stack exchange,提问作者Muhammad Septiyan140905

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:13:14