• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Node js nie wykrywa modułów do importu

Object Storage Arubacloud
0 głosów
296 wizyt
pytanie zadane 6 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)

Znowu coś pokiełbasiłem w imporcie . Teraz jak chcę zaimportować jakiś plik to mi nie wykrywa tego pliku w tej ścieżce, a w błędzie ścieżka jest jakaś inna kompletnie. Moje drzewo plików: cmds - w nim runways.mjs, metar.mjs i charts.mjs; cosfig - w nim config.json; i w głównym pliku bot.mjs, package.json i package-lock.json.

Kod z bot.mjs

import * as Discord from "discord.js";
import config from "./config/config.json";
import {metar} from "./cmds/metar.mjs";
import {charts} from "./cmds/charts.mjs";
import {runway} from "./cmds/runways.mjs";

const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES]});

client.login(config.token);
client.on('messageCreate', msg => {
    if(msg.content.startsWith(config.metarPrefix)){
        const displayMetar = metar.getMetar();
        msg.channel.send(displayMetar);
    }
    else if(msg.content.startsWith(config.chartsPrefix)){
        const displayCharts = charts.getCharts();
        msg.channel.send(displayCharts);
    }
    else{
        return;
    }
})

Nie wiem czy jest potrzebny kod z innych plików, jak tak to proszę pisać.

Błąd: 

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\cichy\Desktop\CopilotBot\cmds\config\config.json' imported from C:\Users\cichy\Desktop\CopilotBot\cmds\charts.mjs
Did you mean to import ../../config/config.json?

 

1 odpowiedź

+1 głos
odpowiedź 6 września 2021 przez Comandeer Guru (601,110 p.)

Z błędu wynika, że w pliku cmds/charts.mjs próbujesz pobrać plik ./config/config.json, który nie istnieje. Powinieneś pobrać plik ze ścieżki wyżej – czyli ../config/config.json.

komentarz 7 września 2021 przez Maxxxii Obywatel (1,260 p.)
tak, też to przeczytałem w błędzie lecz jaki jest tego powód, że próbuje pobrać config.json a nie charts.mjs (tak trochę jakbym jakieś klamry nie domknął). po prostu chcę pobrać charts.mjs z cmds/charts.mjs a on próbuje pobrać config.json z tamtej lokalizacji
komentarz 7 września 2021 przez Comandeer Guru (601,110 p.)

Błąd wskazuje, że w charts.mjs masz jakiś import. Pokaż ten plik.

komentarz 7 września 2021 przez Maxxxii Obywatel (1,260 p.)
import config from "../config/config.json";
function getCharts(){
    const args = msg.content.substr(config.chartsPrefix.lenght);
    argsBig = args.toUpperCase();
        if(uzycia % 5 == 0){
            const chartsSupportEmbed = new MessageEmbed()
                .setAuthor(`${config.embedAuthor}${argsBig}`)
                .setColor(config.embedColor)
                .setDescription(`${config.embedChartsDescription}[here](https://lukeairtool.net/viewchart.php?icao=${argsBig}). ${config.embedSupportInfo}`)
                .setFooter(config.embedFooter);
            msg.channel.send({embeds: [chartsSupportEmbed]});
        }
        else
        {
            const chartsEmbed = new MessageEmbed()
                .setAuthor(`${config.embedAuthor}${argsBig}`)
                .setColor(config.embedColor)
                .setDescription(`${config.embedChartsDescription}[here](https://lukeairtool.net/viewchart.php?icao=${argsBig})`)
                .setFooter(config.embedFooter);
            msg.channel.send({embeds: [chartsEmbed] });  
        }
    uzycia++;
    console.log(uzycia);
}

rzeczywiście jest tu import. czy koniecznym jest zrezygnowanie z niego?

komentarz 7 września 2021 przez Comandeer Guru (601,110 p.)

Nie tyle zrezygnowanie, co dopasowanie ścieżki. Chociaż tak na oko wersja z .. na początku powinna wskazywać na właściwy plik, hm.

komentarz 7 września 2021 przez Maxxxii Obywatel (1,260 p.)

pozmieniałem trochę i błąd się zmienił na taki:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\cichy\Desktop\CopilotBot\cmds\runway.mjs' imported from C:\Users\cichy\Desktop\CopilotBot\bot.mjs

 

komentarz 7 września 2021 przez Comandeer Guru (601,110 p.)

W pierwotnym kodzie miałeś runways.mjs, teraz masz runway.mjs – może o to chodzi?

komentarz 7 września 2021 przez Maxxxii Obywatel (1,260 p.)
początkowo się pomyliłem i napisałem runway a plik nazywa się runways. ale na błąd to nie wpływa
komentarz 7 września 2021 przez Comandeer Guru (601,110 p.)
Trudno coś powiedzieć, nie znając dokładnej struktury plików.
komentarz 7 września 2021 przez Maxxxii Obywatel (1,260 p.)

dobra wrzuciłem wszystko do głównego pliku ale od razu błąd:

C:\Users\cichy\Desktop\CopilotBot\node_modules\discord.js\src\rest\RequestHandler.js:298
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Cannot send an empty message
    at RequestHandler.execute (C:\Users\cichy\Desktop\CopilotBot\node_modules\discord.js\src\rest\RequestHandler.js:298:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\cichy\Desktop\CopilotBot\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async TextChannel.send (C:\Users\cichy\Desktop\CopilotBot\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:171:15) {    
  method: 'post',
  path: '/channels/882552051022831648/messages',
  code: 50006,
  httpStatus: 400,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: undefined,
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined
    },
    files: []
  }
}

aktualny kod:

import * as Discord from "discord.js";
import config from "./config/config.json";
import fetch from "node-fetch";

const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES]});

client.login(config.token);
client.on("ready", () => {
    console.log("Bot ready");
})
client.on('messageCreate', msg => {
    let uzycia = 0;;
    if(msg.content.startsWith(config.metarPrefix)){
        const sendMetarReply = createMetarEmbed();
        msg.channel.send(sendMetarReply);
    }
    else if(msg.content.startsWith(config.chartsPrefix)){
        const sendChartsReply = getCharts();
        msg.channel.send(sendChartsReply);
    }
    else{
        return;
    }

function getCharts(){    
        const args = msg.content.substr(config.chartsPrefix.length);
        const argsBig = args.toUpperCase()
        if(uzycia % 5 == 0){
            const chartsSupportEmbed = new Discord.MessageEmbed()
                .setAuthor(`${config.embedChartsAuthor}${argsBig}`)
                .setColor(config.embedColor)
                .setDescription(`${config.embedChartsDescription}[here](https://lukeairtool.net/viewchart.php?icao=${argsBig}). ${config.embedSupportInfo}`)
                .setFooter(config.embedFooter);
            msg.channel.send({embeds: [chartsSupportEmbed]});
        }
        else
        {
            const chartsEmbed = new Discord.MessageEmbed()
                .setAuthor(`${config.embedChartsAuthor}${argsBig}`)
                .setColor(config.embedColor)
                .setDescription(`${config.embedChartsDescription}[here](https://lukeairtool.net/viewchart.php?icao=${argsBig})`)
                .setFooter(config.embedFooter);
            msg.channel.send({embeds: [chartsEmbed] });  
        }
    uzycia++;
}

function getMetar() {    
    return fetch(`http://metar.vatsim.net/metar.php?id=${argsBig}`)
      .then(res => res.text())
      .then(text => {
        console.log(text);
        return text;
      })
  }
function createMetarEmbed() {     
        const args = msg.content.substr(config.metarPrefix.length);
        const argsBig = args.toUpperCase()             
        const displayMetar = getMetar();
        if(uzycia % 5 == 0){
        const metarSupportEmbed = new Discord.MessageEmbed()
            .setColor(config.embedColour)
            .setAuthor(`${config.embedMetarAuthor}${argsBig}`)
            .setDescription(`${displayMetar}${config.embedSupportInfo}`)
            .setFooter(config.embedFooter)
            msg.channel.send({embeds: [metarSupportEmbed]})
        }
        else{
            const metarEmbed = new Discord.MessageEmbed()
            .setColor(config.embedColour)
            .setAuthor(`${config.embedMetarAuthor}${argsBig}`)
            .setDescription(displayMetar)
            .setFooter(config.embedFooter)
            msg.channel.send({embeds: [metarEmbed]})
        }
        uzycia++;
   }
   console.log(uzycia);
})

 

komentarz 10 września 2021 przez Comandeer Guru (601,110 p.)
Trudno coś tak powiedzieć. Nie znam API tego discorda, najwygodniej byłoby odpalić lokalnie całość i obadać.

Podobne pytania

0 głosów
2 odpowiedzi 200 wizyt
pytanie zadane 27 lipca 2020 w JavaScript przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 264 wizyt
0 głosów
1 odpowiedź 289 wizyt
pytanie zadane 23 stycznia 2023 w JavaScript przez MacieKap Bywalec (2,400 p.)

92,568 zapytań

141,422 odpowiedzi

319,641 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...