错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require()
Error [ERR_REQUIRE_ESM]: require() of ES Module not supported
我正在尝试制作一个 Discord 机器人,如果有人在线玩游戏,它会发出提示。
但是我不断收到此消息:
[ERR_REQUIRE_ESM]: require() of ES Module from not supported. Instead change the require of index.js in... to a dynamic import() which is available in all CommonJS modules.
这是我的代码:
module.exports = {
name: 'username',
description: "this is the username command",
async execute(message, args) {
const fetch = require('node-fetch');
if (args.length !== 1) {
return message.channel.send("invalid username wtf")
}
const ign = args[0]
if (ign.length > 16 || ign.length < 3) {
return message.channel.send("invalid username wtf")
}
const uuid = await fetch(`https://api.mojang.com/users/profiles/minecraft/${ign}`).then(data => data.json()).then(data => data.id).catch(err => message.channel.send("error wtf"));
const onlineInfo = await fetch(`https://api.hypixel.net/status?key=${john}&uuid=${uuid}`).then(data => data.json());
if (uuid.length !== 32) {
return;
}
if (onlineinfo.success) {
if (onlineinfo.session.online) {
message.channel.send("they are online")
}
else {
message.channel.send("they are offline")
}
}
else {
message.channel.send("hypixel api bad wtf")
}
}
}
这是我的 package.json 文件:
{
"name": "discordbot",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node main.js"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"discord.js": "^13.0.1",
"node-fetch": "^3.0.0"
}
}
node-fetch
v3 最近停止支持 require
导入它的方式以支持 ES 模块。您现在需要使用 ESM 导入,例如:
import fetch from "node-fetch";
在文件的顶部。
node-fetch
最新版本不使用 require()
语法导入包。您需要前往 package.json
并输入
{
"type": "module",
}
使用 import
语法并导入 node-fetch
,但是您不能将 require
用于任何其他您需要仅使用 import
语句的包.
我明白了。我只好将 node-fetch
降级到 2.6.1,因为更高版本只使用 ESM,这导致了很多错误。
我正在尝试制作一个 Discord 机器人,如果有人在线玩游戏,它会发出提示。
但是我不断收到此消息:
[ERR_REQUIRE_ESM]: require() of ES Module from not supported. Instead change the require of index.js in... to a dynamic import() which is available in all CommonJS modules.
这是我的代码:
module.exports = {
name: 'username',
description: "this is the username command",
async execute(message, args) {
const fetch = require('node-fetch');
if (args.length !== 1) {
return message.channel.send("invalid username wtf")
}
const ign = args[0]
if (ign.length > 16 || ign.length < 3) {
return message.channel.send("invalid username wtf")
}
const uuid = await fetch(`https://api.mojang.com/users/profiles/minecraft/${ign}`).then(data => data.json()).then(data => data.id).catch(err => message.channel.send("error wtf"));
const onlineInfo = await fetch(`https://api.hypixel.net/status?key=${john}&uuid=${uuid}`).then(data => data.json());
if (uuid.length !== 32) {
return;
}
if (onlineinfo.success) {
if (onlineinfo.session.online) {
message.channel.send("they are online")
}
else {
message.channel.send("they are offline")
}
}
else {
message.channel.send("hypixel api bad wtf")
}
}
}
这是我的 package.json 文件:
{
"name": "discordbot",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node main.js"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"discord.js": "^13.0.1",
"node-fetch": "^3.0.0"
}
}
node-fetch
v3 最近停止支持 require
导入它的方式以支持 ES 模块。您现在需要使用 ESM 导入,例如:
import fetch from "node-fetch";
在文件的顶部。
node-fetch
最新版本不使用 require()
语法导入包。您需要前往 package.json
并输入
{
"type": "module",
}
使用 import
语法并导入 node-fetch
,但是您不能将 require
用于任何其他您需要仅使用 import
语句的包.
我明白了。我只好将 node-fetch
降级到 2.6.1,因为更高版本只使用 ESM,这导致了很多错误。