El nodo js no puede cargar el módulo
Sé que este es un problema común. Intenté reinstalar npm, eliminar node_modules
archivos 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.json
en 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_modules
archivos y package-lock.json
.
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).