在其中一個模塊中需要新的第三方模塊實例。需要節點模塊的新實例
// a
...
exports.thirdParty = require('third-party');
// b
...
exports.thirdParty = require('third-party');
// first-party
...
exports.thirdParty = requireFreshInstance('third-party');
// app.js
var assert = require('assert');
var a = require('a');
var firstParty = require('first-party');
var b = require('b');
assert(a.thirdParty === b.thirdParty);
assert(firstParty.thirdParty !== a.thirdParty);
assert(firstParty.thirdParty !== b.thirdParty);
所有列出的模塊中的具有相似的封裝要求,
dependencies: {
"third-party": "^1"
}
而且要求它應該保持不變,不允許使用像"third-party": "git://..."
這樣的技巧。
假設用戶只控制first-party
模塊,並且不能修改third-party
模塊以使新的factory
方法返回新實例。
我所知道的一個事實,即third-party
緩存一旦如果版本在所有情況下相同的(在技術上它是完整路徑third-party
該事項),極有可能在所有對象.thirdParty
性質是相同的。
這個問題如何在Node.js中以編程方式解決(而不是使用package.json)?
可能與此http://stackoverflow.com/questions/9210542/node- JS-需要緩存,可能對無效。嘗試使用'delete require.cache ['third-party']'。 – peacer212
也許這個模塊'https:// github.com/gajus/require-new'可以解決你的問題嗎? – zangw
@zangw非常感謝,看起來正是我需要的東西。如果您願意,隨意發佈它作爲答案。 – estus