问题描述
我在使用 module.exports 时遇到问题。
我有 2 个使用 discord.js 的脚本,我需要有一个 SetTimeout() 变量,该变量对两个脚本都是通用的,以便能够使用 ClearTimeout( ) 来自他们每个人。
我尝试使用:
//first script
var foo = 20;
module.exports.foo = foo;
//Second Script
var exp = require('./firstscript');
console.log(exp.foo);
这是一个测试,看看我是否做错了,用一个简单的变量而不是我的 SetTimeout()。
当我使用 node 命令运行新脚本
但在我的 2 个原始脚本上使用 npm start 时,测试运行良好,它返回' undefined',但具有相同的语法。
在每个脚本中已经有 discord.js 事件类的 module.exports,例如“Ready”。
我在声明 const 的顶部的主要 module.exports 之外运行这段代码。
我想知道这是否导致了我的问题。
例子:
//the code i'm talking about is here.
module.exports = class ReadyEvent extends BaseEvent {
constructor() {
super('ready');
}
async run(client) {
感谢您的帮助。
如果需要,请向我澄清。
编辑:
我在互联网上查找是否是脚本中已经存在的 module.export 的问题。原来如此。
显然,如果每个 module.export 都没有指定变量,则脚本中不能有多个 module.export:
//this doesn't work
module.exports.value = value;
module.exports = value2;
//this works
module.exports.value = value;
module.exportd.value2 = value2;
我的问题是“discord.js 编译器”使用已经存在的命令来注册每个命令,因此我无法在不破坏机器人的情况下修改它。
我决定将我的计时器放在一个名为 GlobalVars 的新脚本中,它运行得非常好。
我很满意它现在可以工作。
对我来说问题已经解决,但我很想知道是否可以导出包含 discord.js module.exports 语法的变量。
解决方法
从您的 Second Script
变量来看,它似乎需要一个文件夹而不是文件,我认为不允许使用文件夹。
假设您需要的是脚本而不是文件夹:
第一个错误:要求时,括号内必须有引号 (""
) 或 (''
)。
如果是文件夹,请在/
旁边添加一个./firstscript
,并将其分配给您要引用的文件。
var exp = require('./firstscript/THE_INTENDED_FILE');
...如果 firstscript
是一个 json
文件:
var exp = require('./firstscript.json');
从文件中提取变量
// Option 1:
console.log(exp.foo);
// Option 2:
const extract = exp.foo
console.log(extract);