Node.js运行项目时whatwg-url报TextEncoder未定义错误如何解决?
问题根因
该报错由whatwg-url依赖包与当前运行的Node.js版本不兼容导致:
- Node.js 10.x及更早版本未在全局作用域默认挂载
TextEncoder、TextDecoderAPI - 你新增的
mongodb依赖会自动引入高版本whatwg-url,该版本默认调用全局TextEncoder,因此之前无mongodb的项目可以正常运行
解决方案
按优先级依次尝试:
确认项目实际使用的Node.js版本
运行命令node -v查看当前生效版本,若仍为10.x及更早版本,说明你升级的是全局Node,当前项目存在版本锁定(比如使用nvm局部版本、IDE指定了旧Node路径),切换到Node.js 12.x及以上版本即可直接解决问题。注入全局polyfill(无需修改依赖/Node版本)
在项目入口文件(比如index.js、app.js)的最顶部添加如下代码:
const { TextEncoder, TextDecoder } = require('util'); global.TextEncoder = TextEncoder; global.TextDecoder = TextDecoder;
该方法直接将Node内置的编码API挂载到全局,适配高版本whatwg-url的调用逻辑。
- 降级兼容版
whatwg-url
如果上述方案不适用,可安装最后一个兼容Node.js 10.x的whatwg-url版本:
npm install whatwg-url@11.0.0
- 清理依赖锁文件重装
如果修改版本后仍报错,删除项目根目录下的node_modules文件夹、package-lock.json文件后重新执行npm install,排除旧版本依赖锁定的影响。
内容的提问来源于stack exchange,提问作者jlsym
相关产品推荐
相关产品推荐

