ReferenceError: TextEncoder is not defined Node.js with mong



问题似乎与猫鼬&Mongodb包,当

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

它在repl上也能很好地工作。我很羡慕你这是我的代码

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');
});

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

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

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

检查你的节点版本,如果它低于12它将无法工作,如果是这种情况,更新节点应该做的工作。你也可以降级你的猫鼬版本。

有一个问题在Mongoose github页面关闭。https://github.com/Automattic/mongoose/issues/10638

要消除Windows中的此错误,请访问此站点https://nodejs.org/en/download/并下载最新版本的Node.js,否则如果您不想升级到最新版本,则可以通过在node_modules/whatwg-url/dist/encoding.js文件的顶部添加这一行来消除此错误:

const {TextDecoder, TextEncoder} = require("util");

对于我来说,我使用的是ubuntu20.04,因为@MuhammadTariq说我的节点版本是10,升级到16版本后错误消失了。

最新更新