//lib.js
var opt = 0
exports.set = function(arg) {
opt = arg
}
exports.prn = function() {
console.log(opt)
}
///prog.js
var lib = require('./lib')
var lib2 = require('./lib')
lib.set(222)
lib2.set(333)
lib.prn()
lib2.prn()
prog.js 将输出: 333 333
但我需要它来输出: 222 333
换句话说,opt
对于变量 lib
和变量 lib2
必须是唯一的。如何实现?
最佳答案
那是因为通常 nodejs 会缓存通过 require 获取的模块。您可以使用以下助手:
// RequireUncached.js
module.exports = function(module) {
delete require.cache[require.resolve(module)]
return require(module);
}
以及助手的使用:
var requireUncached = require('RequireUncached.js');
requireUncached("./lib");
请记住,这种方法被认为是不好的做法,不应使用。我建议将您的逻辑包装到一个函数中,需要模块并调用该函数。所以,每次你得到一个新的实例。
关于javascript - Node.js 两次调用 require(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19303764/