node:ReferenceError: XMLHttpRequest is not defined

node:ReferenceError: XMLHttpRequest is not defined

1 前言

node执行如下代码:

javascript 复制代码
new XMLHttpRequest()

报错提示:ReferenceError: XMLHttpRequest is not defined

2 解决

2.1 可能原因是没有安装xmlhttprequest

javascript 复制代码
npm install xmlhttprequest

使用淘宝镜像源安装成功:

javascript 复制代码
https://registry.npmmirror.com/

package-lock.json:

2.2 安装xmlhttprequest后需要引入

上述直接定义方式为如下:

javascript 复制代码
new XMLHttpRequest()

安装后node执行依然报错提示:ReferenceError: XMLHttpRequest is not defined,是因为还需要引入使用。

使用node命令,那么需要使用CommonJS模块系统的require,引入如下:

javascript 复制代码
let request = require('xmlhttprequest').XMLHttpRequest;

重新执行node xx.js不再报错。

2.3 如何使用模块Module的方式引入呢?

因为Node生态包含两个不同的模块系统,ESM(ECMAScript模块)和 CommonJS,两个模块系统彼此不兼容。如果我们希望使用module引入的方式来执行(ECMAScript),而不是上面的CommonJS的require引入,修改如下:

javascript 复制代码
import * as request from "xmlhttprequest";

但是直接执行报错提示:SyntaxError: Cannot use import statement outside a module

解决方式是在执行的js文件所在目录下的package.json文件中,添加如下配置:

javascript 复制代码
"type":"module",

但是因为这里是跑的demo项目,没有package.json文件,这里我在开启终端的文件目录下生成package.json文件:

生成package.json的命令:

javascript 复制代码
npm init -y

或者npm init(需要多次回车确定以及输入yes)

生成 package-lock.json

javascript 复制代码
npm install --package-lock-only

在首次安装依赖包时会创建package-lock.json文件,这里我们使用npm init生成package.json文件即可:

在es6目录下的终端输入npm init后,生成package.json文件:

新增如下配置:

javascript 复制代码
"type":"module",

再次执行如下:

javascript 复制代码
import * as request from "xmlhttprequest";
const req = new request.XMLHttpRequest();

console.log(req)

执行无误:

相关推荐
wuyk5551 小时前
104.C 语言字节对齐:从底层原理到工程实践的完整指南
c语言·开发语言·stm32·单片机·嵌入式硬件
君顾17 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生8 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
平头哥技术团队8 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++8 小时前
【洛谷】kmp算法
开发语言·算法
传奇开心果编程9 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
m0_380743879 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php
yume_sibai9 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
Draw Stars9 小时前
Git BASH安装教程
开发语言·git·bash
vortex59 小时前
一文讲透 Zsh 与 Bash 的区别
开发语言·bash