0

我一直遇到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时,测试工作正常,它返回“未定义”,同时具有相同的语法。 在每个脚本中已经有一个用于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 :

//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 语法导出变量。

4

1 回答 1

0

从您的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);
于 2020-12-27T18:57:44.663 回答