错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require() [英] Error [ERR_REQUIRE_ESM]: require() of ES Module not supported

查看:2884
本文介绍了错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个不和谐的机器人,它只会显示是否有人在游戏中在线.

I'm trying to make a discord bot that just says if someone is online on the game.

但我不断收到此消息:

[ERR_REQUIRE_ESM]:不支持 ES 模块的 require().而是将 index.js in... 的 require 更改为在所有 CommonJS 模块中都可用的动态 import().

[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:

This is my 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 导入,例如:

node-fetch v3 recently stopped support for the require way of importing it in favor of ES Modules. You'll need to use ESM imports now, like:

import fetch from "node-fetch";

在文件的顶部.

这篇关于错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆