手动加载node.js模块

时间:2014-02-25 01:36:41

标签: javascript node.js

有没有人知道如何使用node的本机“模块”模块(!)从文件中手动加载模块,作为使用普通require机制的替代方法?

我知道这是一个奇怪的请求,但是我需要模块来全局声明它们的变量(到那个模块),并且每次需要时都会将它们包装成新模块,例如。

var private;

module.exports = {
    setPrivate: function (value) {private = value} 
}

详细说明,如果您在具有相同路径的不同地方呼叫需要两次,则会返回相同的模块。我需要总是得到一个新的模块,以便在两次setPrivate需要时只能影响它自己的变量;

基本上,我需要找出require()在第一次调用时用来创建和返回模块的机制。已经玩过直接实例化模块(如在https://github.com/joyent/node/blob/master/lib/module.js#L293中),但没有运气 - exports属性始终是一个空对象。

请大家不建议只使用构造函数...我很感激我有一个不寻常的用例。

1 个答案:

答案 0 :(得分:1)

你不需要做任何这么复杂的事情。

相反,您可以简单地delete it from the cache

delete require.cache[module.id];