node.js - 如何使用分片管理器从 ShardClientUtil 访问 shardArgs?
问题描述
我正在使用 Discord.JS 设置一个 Bot,并希望将shardArgs
选项ShardingManager
从ShardClient
. 如何shardArgs
从ShardClientUtil
?
// ShardManager.js
const Discord = require('discord.js');
const Manager = new Discord.ShardingManager('./Main.js', {
shardArgs: ["shard args to be passed through"]
});
Manager.spawn(1);
我试过使用.fetchClientValues()
:
// Main.js
const Discord = require('discord.js');
const client = new Discord.Client();
client.shard.fetchClientValues('manager.shardArgs')
.then(results => {
console.log(results);
})
.catch(console.error);
client.login("token");
我尝试了很多不同的东西,我什至在调试器中检查了对象,但我找不到shardArgs
,所以我不确定我应该从哪里访问它。
我希望shardArgs
是"shard args to be passed through"
,而此刻我正在得到null
。
解决方案
shardArgs
实际上传递了一点:
- First to
Shard
的构造函数 - 然后到
Shard#spawn
- 最后到
child_process.fork
(这将启动分片的进程)
您可以通过process.argv
. (无需IPC)
请注意,第一个条目是可执行文件(节点),第二个是正在执行的文件(Main.js),第三个及以上条目是您的数组。
例如,登录process.argv
您的Main.js
文件可能会记录:
['usr/bin/node', '/home/bot/Main.js', 'shard args to be passed through']
推荐阅读
- architecture - 可以注入服务/API 客户端来聚合根吗?
- css - 如何使元素之间的间隙相等
- django - Django 检查相关对象的所有实例是否包含某个值
- angular - 如何使用 ActivateRoute 的 query params map 来启动导航图,反之亦然?
- python - 如何同时使用 substrin 和 instr pyspark
- mongodb - MongoDB 聚合性能改进
- xslt - 删除节点中第二个分隔符之前的字符串
- python - Python 中如何声明数组类型提示?
- javascript - Javascript 在初始化步骤中声明变量
- python - 有人可以给出这个函数应该做什么的示例解决方案吗?