参考错误:未定义 TextEncoder。使用 mongoose 的 Node.js

9

问题似乎出在Mongoose和MongoDB包上,因为在</span>

mongoose.connect('mongodb+srv://mydb:<password>@cluster0.w1opr.mongodb.net/test?retryWrites=true&w=majority');

已删除 在repl.it云环境中也能正常工作 这是我的代码

var express = require('express');
var ejs = require('ejs');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.connect('mongodb+srv://mydb:<password>@cluster0.w1opr.mongodb.net/test? 
retryWrites=true&w=majority');
app.set('view engine','ejs')
app.use(bodyParser.urlencoded({extended: true}));
.
.
.
app.listen(3000,function(){
console.log('Server is running on port 3000');
});
5个回答

35

实际上,mongoose 6 需要 Node 12 或更高版本,所以这是预期的行为。Mongoose 6 不支持 Node 10,因此更新 Node 版本将解决此问题。也可以通过将 mongoose 版本降级到 5 来解决问题。


4
我正在使用 Node 14,但仍然遇到了这个错误。 - dragonfly02
4
使用Node 16仍然出现错误。 - Dan
4
使用 Node 版本 18 时遇到了这个错误。 - Gaurav Ingalkar

6

在使用测试时遇到了同样的问题。在我的jest配置中将testEnvironment设置为node解决了这个问题 (https://mongoosejs.com/docs/jest.html)

module.exports = {
  testEnvironment: 'node'
};

1
这个答案对我来说是正确的。 - AmitK

5
要消除这个错误,需要升级到最新版本的Node.js。您可以访问此网站https://nodejs.org/en/download/并下载最新版本的Node.js。如果您不想升级到最新版本,则可以在node_modules / whatwg-url / dist / encoding.js文件的顶部添加以下行来消除此错误:
const {TextDecoder, TextEncoder} = require("util");

5

0

对我来说,我正在使用UBUNUTU 20.04,正如@MuhammadTariq所说,我的节点版本是10,在将版本升级到16之后,错误已经消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接