如何将 JavaScript 变量存储在不同的文件中?

How do you store JavaScript variables in a different file?

我有一个包含很多变量(数字、字符串等)的 Discord 机器人项目。我现在使用 .ENV 来存储我的变量。我想改变这一点。我了解到您可以将 .ENV 用于敏感变量。例如 (Discord.js),您的机器人令牌。我试过在线搜索,但找不到正确的答案。理想情况下,我希望只有一个文件包含我的所有字符串。例如:

botcolor = #ffffff

新:

const botcolor = ./config.js

botcolor = ${botcolor}

带有字符串的不同示例(当您执行 ?ping 时)

message.channel.send("Pong!")

新:

const answer = ./config.js

message.channel.send(`${answer}`)

类似的东西。我对 JS 不是很有经验。所以我很抱歉,如果我不是很清楚。 因为我有多个机器人,所以我想要一个配置文件。我的机器人就像一个模板,我可以添加不同类型的配置,这样整个机器人(颜色、答案)就会发生变化。我的机器人在 Discord.js v12 顺便说一下,因为更新几乎意味着重写我的机器人。

那么有人有外部配置文件的解决方案吗?

由于您使用的是 Node.JS,因此您可以使用 CommonJS requires。我想在你的主 JavaScript 文件的顶部你有一个片段,类似于:

const discord = require("discord.js");

您也可以对自己的文件执行此操作!
考虑这个基本文件设置:

- config.js
- index.js <-- entry file

config.js 中,您导出数据供另一个文件使用。我们可以这样做:

module.exports = {
  answer: "blah blah blah",
  botColor: "#fff",
};

您可以导出任何内容,但最常见的是函数或对象(我们刚刚做了)。现在我们可以像这样使用配置文件:

// index.js
const config = require("./config");

在文件前添加 ./ 很重要,否则 Node 会尝试从 /node_modules 导入。然后在你导入它之后你就​​可以像一个对象一样使用它了:

message.channel.send(config.answer); // <-- "blah blah blah"

您可以导出多个对象:

// config.js
exports.bot = {
  answer: "blah blah blah"
};
exports.colors = {
  main: "#fff"
};

然后你像这样使用它:

// index.js
const config = require("./config");
const answer = config.bot.answer;

或解构:

// index.js
const { bot, colors } = require("./config");
bot.answer; // <-- "blah blah blah"
colors.main // <-- "#fff"

注意:你也可以做require("./config.js"),但我发现没有.js的语法更容易理解。您还可以要求 json 个文件作为对象。