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

WSL2 Ubuntu下Node.js连接MongoDB出现TextEncoder未定义报错

报错原因

这个报错是当前使用的Node.js版本过低导致的:TextEncoder 是Node.js v11.0.0之后才默认挂载到全局的API,你安装的mongoose版本依赖的whatwg-url包需要调用这个全局API,低于v11的Node环境无法识别该变量就会抛出错误。

解决方案

方案1(推荐):升级Node.js到长期支持版本

使用nvm(Node版本管理器)升级操作最简便,不会污染系统环境:

  • 先清空当前项目的依赖缓存:
rm -rf node_modules package-lock.json yarn.lock
  • 安装nvm,完成后重启终端或执行source ~/.bashrc(如果用zsh就替换为source ~/.zshrc)使配置生效
  • 安装最新的Node.js LTS版本:
nvm install --lts
# 切换到刚安装的LTS版本
nvm use --lts
# 设置为默认版本,避免重启终端后版本回退
nvm alias default --lts
  • 重新安装项目依赖后启动服务即可:
npm install
node server.js

方案2(临时兼容):手动注入全局API

如果暂时不能升级Node版本,可以在server.js文件最顶部添加以下代码,手动把TextEncoder挂载到全局:

const { TextEncoder, TextDecoder } = require('util');
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;

注意该方案仅作临时兼容使用,Node.js v10及更早版本已经停止官方维护,存在安全漏洞,长期使用建议优先升级Node版本。

额外优化提示

你当前使用的如果是mongoose 6.x及以上版本,mongoose.connect方法已经默认开启useNewUrlParser等参数,代码里传入的配置可以直接删除,不会产生警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:05