【发布时间】:2020-05-17 23:15:25
【问题描述】:
有几个类似的问题,但我仍然找不到答案。 我在 discord.js 中创建了一个不和谐机器人,其中每个命令都是一个单独的模块,我不知道如何解决传输到每个文件的连接。
这是我的文件树:
bot
├─index.js
├─my_modules/
│ └─db.js
└─commands/
├─exampleCommand.js
├─...
└─subCommandsForExampleCommand/
├─subCommand1.js
└─...
db.js:
const mysql = require(`mysql`);
var conn = mysql.createConnection({
//user, pass, etc..
});
//some db functions
module.exports = conn;
来自 node.js 文档:
模块根据其解析的文件名进行缓存。由于模块可能 根据调用的位置解析为不同的文件名 模块(从 node_modules 文件夹加载),不能保证 require('foo') 将始终返回完全相同的对象,如果它会 解析为不同的文件。
在index.js 中使用require(`./my_modules/database.js`) 和在subCommand1.js 中使用require(`../../my_modules/database.js`) 可能会返回不同的实例。那么如何最好地传输文件之间的连接呢?
将连接作为参数从index 传递到exampleCommand 并从这里传递到subCommand1,或者在索引中设置一个全局变量并在其他文件中使用它?
【问题讨论】:
-
大多数情况下,全局共享数据库连接是个坏主意,尤其是当您有一个长时间运行的应用程序时。
标签: javascript node.js node-modules discord.js node-mysql