Требуются три файла, дающие мне три одинаковых объекта - PullRequest
0 голосов
/ 06 апреля 2019

Я импортирую три js-модуля, которые я сделал в программу, но всякий раз, когда я запускаю любой из них, они всегда запускают экспортированную функцию последнего импортированного файла.

x = require("./modules/x/x");
y = require("./modules/y/y");
z = require("./modules/z/z");

и в каждом из этих файловявляется функцией, экспортируемой как:

module.exports = { runX/Y/Z }

Я ожидаю, что runX будет работать для x.runX, runY для y.runY и runZ для z.runZ.Тем не менее, функция, которая на самом деле выполняется, является той, которая когда-либо импортировалась последней.

Код внутри модулей выглядит примерно так

const juergenJSON = require("./juergen.json");
noArg = async channel => {
};
oneArg = async (arg1, channel) => {};
twoArg = async (arg1, arg2, channel) => {};

runJuergen = options => {
  const juergen = options;

  juergen.twoArgs
    ? twoArg(juergen.arg1, juergen.arg2, juergen.channel)
    : juergen.oneArgs
    ? oneArg(juergen.arg1, juergen.channel)
    : noArg(juergen.channel);
};

module.exports = { runJuergen };

Они называются так

const { Client } = require("discord.js");
const auth = require("./auth.json");

let reddit = require("./modules/reddit/reddit.js");

let juergen = require("./modules/juergen/juergen.js");

let joe = require("./modules/joe/joe.js");

// Create an instance of a Discord client
const client = new Client();

/**
 * The ready event is vital, it means that only _after_ this will your bot start reacting to information
 * received from Discord
 */
client.on("ready", () => {
  console.log("Bot Loaded");
});

client.on("message", message => {
  let name;
  let arg1;
  let arg2;

  const temp = message.content.split(" ");
  const channel = message.channel;

  name = temp[0].substr(1);
  arg1 = temp[1];
  arg2 = temp[2];

  let oneArgs;
  let twoArgs;
  arg1 && true ? (oneArgs = true) : (oneArgs = false);
  arg1 && arg2 ? (twoArgs = true) : (twoArgs = false);

  const options = {
    name: name,
    arg1: arg1,
    arg2: arg2,
    oneArgs: oneArgs,
    twoArgs: twoArgs,
    channel: channel
  };

  switch (name.toLowerCase()) {
    case "reddit":
    console.log("hello");
      reddit.runReddit(options);
      break;
    case "juergen":
      juergen.runJuergen(options);
      break;
    case "joe":
      joe.runJoe(options);
      break;

    case "max":
      tea(arg1, message);
      break;

      break;
  }
});

Я знаю, что есть некоторые похожие посты на эту тему, но у меня возникают проблемы с их пониманием, поэтому я бы с благодарностью отнесся к конкретной ситуации.

1 Ответ

0 голосов
/ 07 апреля 2019

Определение каждого const локально для его регистра в операторе switch решило проблему

...