从 module.exports 调用 .json

Call a .json from module.exports

为了避免每次切换表情符号时都必须更改每个文件中的每个表情符号,我决定放置一个 emojis.json 并从那里调用表情符号。

emojis.json

{
    "loading": "<a:loading:847653387343626301>",
    "pressf": "<:pressf:862166705911758909>"
}

Exampleping.js

const emoji = require('../emojis.json')

module.exports = {
    name: 'ping',
    execute(message, args) {
        message.channel.send(`${emoji.loading}Pong.`)
    }
}

这是正确的方法吗?我愿意接受 new/better 个想法。 顺便说一句,错误:code: 'MODULE_NOT_FOUND',

嗯,你的做法在一定程度上是正确的。唯一的问题是您导入了 json 文件而不是 js 文件,因此它会引发错误。

实现此目的的正确方法是使用 module.exports

导出 json 对象的 emojis.js 文件
// emojis.js
module.exports = {
    loading: "<a:loading:847653387343626301>",
    pressf: "<:pressf:862166705911758909>"
};


// Exampleping.js
const emojis = require('../../emojis.js')
module.exports = {
    name: 'ping',
    execute(message, args) {
        message.channel.send(`${emoji.loading}Pong.`)
    }
}

除了您的导入语句没有引用 emojis.json 文件外,您的代码是干净的。更清楚地说,脚本无法找到文件,这意味着 emojis.json 不在与 exampleping.js (require('./emojis.js')).

相同的目录中

根据我在 Discord 机器人开发方面的经验,我相信您将 emojis.json 放在根目录中,而 exampleping.js 放在通常名为“commands”的目录中。话虽如此,您所需要的只是通过将另一个 . 添加到 require().

来存在命令目录
      const emojis = require('../emojis.js');
      //instead of ./emojis.json

HTML File Path