有可能'要求'Node.js中可以访问导入文件全局范围的对象

Is it possible to 'require' a object in Node.js that can access the importing files global scope?

本文关键字:文件 导入 全局 对象 访问 范围 Node 要求 js 有可能      更新时间:2023-09-26

我已经四处搜索了一下,看看这是否可能。到目前为止,据我所知,情况并非如此。

在我的main.js文件中,我有以下代码:

var commands = require('./commands.js');

它从commands.js导入一个对象,该对象按以下方式设置:

module.exports = {
   var1: "something" + somevar,
   var2: "something" + someothervar,
   ...
}

这允许我从main.js文件中访问对象commands,就好像它刚刚在main.js本身中解密一样。但是,当我希望导出的commands.js文件能够访问main.js的全局变量作用域时,我遇到了一个问题。假设somevarsomeothervarmain.js全局作用域的一部分,当我想从commands获取值时,我不希望它们是"未定义的"。

长话短说,我想把这个导入的对象看作是刚刚在main.js中声明的。

我正试图为Discord编写一个聊天机器人,为了整洁和组织,我想把它可以使用的函数列表与处理它们的代码分开。这值得付出努力吗?有更好的方法吗?我现在也在处理SQL,试图设计出尽可能模块化/可定制的程序。

这是不可能的,当您导出一个模块时,所有变量都会被解析。

当你导入时,你总是会得到带有所有表达式的对象

我建议将var1和var2作为函数

module.exports = {
   var1: function(someVar){ return "something" + someVar},
   var2: function(someothervar) {return "something" + someothervar},
   ...
}
Now when you import it in main.js ,pass your somevar and someothervar