const utf8Encoder = new TextEncoder();在节点js

const utf8Encoder = new TextEncoder(); in Node js

我正在尝试使用 mongodb 所以我安装了 mongoose 包

但问题是当我这样写的时候

const express = require("express");
const dotenv = require("dotenv");
const mongoose = require("mongoose"); //getting error here

它向我显示这样的错误

const utf8Encoder = new TextEncoder();
                    ^

ReferenceError: TextEncoder is not defined

如果我评论 mongoose 行,我没有收到任何错误,但我需要使用它,即使我检查了我的节点版本 16.5.0 我试着寻找一个旧的 post,那里发生了同样的错误,但我无法理解它有什么帮助吗?旧 post link enter link description here

如何修复这个错误

在 node_modules>whatwg-url>dist

中打开您的 encoding.js 文件夹

并编写此代码

"use strict";
var util= require('util');
const utf8Encoder = new util.TextEncoder();
const utf8Decoder = new util.TextDecoder("utf-8", { ignoreBOM: true });

代替

"use strict";
const utf8Encoder = new TextEncoder();
const utf8Decoder = new TextDecoder("utf-8", { ignoreBOM: true });

你所缺少的就是包含实用程序的这一小部分

var util= require('util');
const utf8Encoder = new util.TextEncoder();
const utf8Decoder = new util.TextEncoder("utf-8", { ignoreBOM: true });

在 node_modules

中打开您的 encoding.js 文件夹
  1. 打开node_modules
  2. 找到 whawg-url 文件夹并打开。
  3. 搜索 dist 文件夹 - 在那里,您会找到 encoding.js 文件夹
  4. 通过 VS Code 或您选择的任何 IDE 打开。

替换这行代码

"use strict";
const utf8Encoder = new TextEncoder();
const utf8Decoder = new TextDecoder("utf-8", { ignoreBOM: true });

有了这个--

"use strict";
var util= require('util');
const utf8Encoder = new util.TextEncoder();
const utf8Decoder = new util.TextDecoder("utf-8", { ignoreBOM: true });

那你就可以开始了。

这似乎是旧节点版本的问题。您需要使用最新的节点。如果您使用 nvm 类型

nvm use node

注意:要使用 nvm 下载最新节点,请使用此命令

nvm install --lts

这是因为您使用的是旧版本的节点,如果您使用 apt install node 安装节点,您得到的是旧版本。所以你需要升级到最新版本的节点。

这在我的小脚本文件的顶部对我有用。

"use strict";
const util = require('util');
global.TextEncoder = util.TextEncoder;
global.TextDecoder = util.TextDecoder;

这是与 node.js 版本的兼容性问题,请升级您的 node.js 版本,然后重新安装节点包。

升级您的版本:v16.14.2

不建议修改node_modules文件夹内的文件

您可以使用NVM来管理多个node.js版本,这里是安装指南:https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04