El nodo js no puede cargar el módulo

Resuelto Phoebe asked hace 7 meses • 0 respuestas

Sé que este es un problema común. Intenté reinstalar npm, eliminar node_modulesarchivos y package-lock.json. Pero aún así no funcionó. Aquí está el resultado de mi consola:

node:internal/modules/cjs/loader:1080
throw err;
^

Error: Cannot find module 'config.json'
Require stack:

- /Users/phoebe/Downloads/Zips/idiot_bot_js/index.js
  at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
  at Module._load (node:internal/modules/cjs/loader:922:27)
  at Module.require (node:internal/modules/cjs/loader:1143:19)
  at require (node:internal/modules/cjs/helpers:119:18)
  at Object.<anonymous> (/Users/phoebe/Downloads/Zips/idiot_bot_js/index.js:7:17)
  at Module._compile (node:internal/modules/cjs/loader:1256:14)
  at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
  at Module.load (node:internal/modules/cjs/loader:1119:32)
  at Module._load (node:internal/modules/cjs/loader:960:12)
  at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:86:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/Users/phoebe/Downloads/Zips/idiot_bot_js/index.js' ]
  }

Node.js v18.18.0

Aquí está la estructura de mi archivo de código (la tengo config.jsonen la misma carpeta que index.js)

> ls
commands     data    hook    index.js  node_modules       package.json  utils
config.json  events  images  LICENSE   package-lock.json  README.md

Aquí está miindex.js

'use strict';

const { Client, GatewayIntentBits } = require('discord.js');
const { readdirSync } = require('fs');
const { join } = require('path');

const { bot } = require('config.json');
const CmdList = require('./utils/CmdList.js');

const { log } = require('./utils/Log.js');
const deployCmd = require('./utils/deployCmds.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.events = readdirSync(join(__dirname, './events'));
for (let event of client.events) {
    if (event.indexOf('Base') !== -1 || event.indexOf('.json') !== -1) {
        continue;
    }

    const eventModule = require(`./events/${event}`);
    if (typeof eventModule !== 'function') {
        log.write('skip bad event:', event);
        continue;
    }

    const eventClass = new eventModule();
    client.on(eventClass.name, (...args) => {
        eventClass.eventCallback(client, ...args)
            .catch( (err) => {
                log.write(eventClass.name, 'catch error:', err);
                client.errHandler.send(err);
            });
    });

    log.write('installed event:', eventClass.name);

}

client.cmdList = new CmdList();
const commands = readdirSync(join(__dirname, './commands'));
for (let cmd of commands) {
    if (cmd.indexOf('Base') !== -1  || cmd.indexOf('.json') !== -1) {
        continue;
    }

    const cmdModule = require(`./commands/${cmd}`);
    if (typeof cmdModule !== 'function') {
        log.write('skip bad command:',  cmd);
        continue;
    }

    const cmdClass = new cmdModule();
    client.cmdList.installCmd(cmdClass);
}

deployCmd(client.cmdList.cmdsBuilder.map(command => command.toJSON()));

client.login(bot.token);

Aquí está miconfig.json

{
    "bot": {
        "token": "MTIwNzk0MTc0NjkxOTc0MzQ4OA.GnreJ7.UHciMfVU6k2AaJ_" (changed a few characters for security)
    }
}

¡Muchas gracias por la ayuda!

Intenté reinstalar npm, eliminar node_modulesarchivos y package-lock.json.

Phoebe avatar Feb 16 '24 14:02 Phoebe
Aceptado

En la línea, const { bot } = require('config.json');no está utilizando el indicador de ruta relativa ( ./), por lo tanto, el nodo está intentando importarlo desde la carpeta node_modules, lo cual fallará, simplemente agréguelo ./a la ruta para llegar a esto: const { bot } = require('./config.json');(suponiendo que el archivo esté en la misma carpeta).

Dan avatar Feb 16 '2024 10:02 Dan