gpt4 book ai didi

javascript - 在node.js中的模块之间传递mysql连接

转载 作者:行者123 更新时间:2023-12-02 21:55:39 25 4
gpt4 key购买 nike

有几个类似的问题,但我仍然找不到答案。我正在discord.js 中创建一个discord 机器人,其中每个命令都是一个单独的模块,我不知道如何解决将连接传输到每个文件的问题。

这是我的文件树:

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文档:

Modules are cached based on their resolved filename. Since modules may resolve to a different filename based on the location of the calling module (loading from node_modules folders), it is not a guarantee that require('foo') will always return the exact same object, if it would resolve to different files.

index.jsrequire(`../../my_modules/database) 中使用 require(`./my_modules/database.js`) subCommand1.js 中的 .js`) 可能会返回不同的实例。那么如何最好地传递文件之间的连接呢?

将连接作为参数从 index 传递到 exampleCommand 并从这里传递到 subCommand1,或者在索引中设置一个全局变量并在其他文件中使用它吗?

最佳答案

按照你的方法,没问题。文档意味着,如果您在不同位置有多个名为 db.js 的文件,则可能会根据加载位置加载不同的文件。 IE。如果您只是 require('moduleName') ,就会有一种解析机制,该机制从当前目录开始,然后移动到其他位置,例如 Node 模块等。只要您有一个 db.js 并且也没有类似命名的 Node 模块,应该没问题。

关于javascript - 在node.js中的模块之间传递mysql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60018219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com