ReferenceError:TextEncoder 未使用 mongoose 定义 Node.js

Sei*_*fri 9 mongoose mongodb node.js npm-package

问题似乎出在 mongoose 和 mongodb 包上,因为它在以下情况下工作正常

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

被删除它在 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');
});
Run Code Online (Sandbox Code Playgroud)

Muh*_*riq 35

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

  • 我正在使用 Node 14,但仍然出现此错误。 (5认同)
  • 使用节点 16,错误仍然存​​在。 (5认同)
  • Node 版本 18 也出现此错误 (5认同)

Jon*_*ert 6

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

module.exports = {
  testEnvironment: 'node'
};
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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


小智 5

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

const {TextDecoder, TextEncoder} = require("util");
Run Code Online (Sandbox Code Playgroud)