gpt4 book ai didi

javascript - 通用函数中的特定变量名称 - Node.js

转载 作者:行者123 更新时间:2023-12-03 08:09:53 25 4
gpt4 key购买 nike

我正在编写一些代码,我需要能够动态加载、卸载和重新加载模块(无需关闭程序)。我遇到的一个大问题是,当我重新加载模块时,无法为模块提供唯一的名称 - 也就是说,我正在使用通用函数来重新加载它们:

try {
delete require.cache['./plugins/'+plugin];
console.log("Reloading " + plugin + ".");
var ??? = require('./plugins/'+plugin);

}

鉴于这需要适用于未指定数量的模块(甚至是启动时未包含的模块),我该如何命名新的 Require 变量(目前 ??? 是占位符)。

谢谢!

编辑:

for (i in fs.readdirSync("./plugins")) {
var pluginName = plugins[i].split('.')[0]
plugins[pluginName] = pluginName;
plugins[pluginName] = require("./plugins/" + pluginName);
console.log(global.plugins[i].split('.')[0]);
};

console.log(testModule1.addi(2, 3));
console.log(testModule2.mult(2,3));

这就是我现在所拥有的,但它不起作用(testModule1.addi 只是加法,testModule2.mult 只是乘法)。当我做类似的事情时它工作得很好:

var testModule1 = require("./plugins/testModule1");
var testModule2 = require("./plugins/testModule2");

然后调用函数。

最佳答案

你不能有这样的可变变量名称,但幸运的是你可以使用一个对象,并给它可变的属性名称,如下所示:

var uuid = require('node-uuid');
var myModules = {};

var moduleName = 'module_' + uuid.v1();
myModules[moduleName] = require('./plugins/' + plugin);

这将保证您每次在 moduleName 下都可以使用一个唯一的名称。

关于javascript - 通用函数中的特定变量名称 - Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192343/

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