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

在DigitalOcean部署MERN Stack时出现TextEncoder未定义错误

问题原因
  • 根本原因是生产环境的Node.js版本过低:TextEncoder 和 TextDecoder 是从 Node.js v11.0.0 版本才开始支持全局挂载的API,如果生产环境Node版本低于v11,运行时就会抛出TextEncoder is not defined错误。你可以先在生产环境执行node -v命令查看当前Node版本,确认是否符合版本要求。
  • 项目中引入的新版mongoose等依赖默认依赖这两个全局API,开发环境运行正常是因为本地Node版本较高符合要求,和生产环境版本不一致导致了环境差异问题。
解决方案

方案1:升级生产环境Node.js版本(最推荐)

直接将生产环境的Node.js升级到v12及以上的LTS长期支持版本(推荐v16、v18、v20),既可以解决该报错,也能避免后续其他依赖的版本兼容问题。
升级完成后执行node -v确认版本无误,再重启服务即可。

方案2:手动添加polyfill(适合暂时无法升级Node版本的场景)

在你的index.js文件最顶部添加如下代码,手动将TextEncoder和TextDecoder挂载到全局对象:

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

添加完成后重启服务即可正常运行。

方案3:降级兼容低版本Node的依赖版本

如果生产Node版本只能维持在v10及以下,可以将mongoose降级到v5.x版本,该版本mongoose不依赖全局TextEncoder API。
执行安装命令:
npm install mongoose@5.x
安装完成后重启服务即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:03