node.js - 需要三个文件给了我三个相同的对象
问题描述
我正在导入我制作的三个 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;
}
});
我知道那里有一些类似的帖子,但我无法理解它们,因此非常感谢针对我的情况做出的回应。
解决方案
在 switch 语句中将每个 const 本地定义为它的 case 解决了这个问题
推荐阅读
- vba - VBA - 隐藏行宏限制
- lua - Lua table.insert 不起作用
- amazon-web-services - Terraform:如何从一个资源块创建多个 aws 子网?
- node.js - 无法使用 Firebase Cloud Functions 创建 xlsx 文件
- go - Cookie returning validity error
- laravel - The page has expired due to inactivity. Why?
- ios - Programmatically created tableview delegate not working
- python - PyQt4 QWebPage 设置 Qtimer 用于额外时间渲染 Javascript
- javascript - 使用Typescript在nodejs中读取文件
- java - 检查Java版本是否大于Java中的某个迭代?