我遇到一個奇怪的問題,運行最新的browserify(10.2.4)和gulp。 似乎相同的文件被多次解析,所以創建單例時我沒有得到相同的實例。 我在module.exports之前放了一個'調試器',並且驗證它被調用兩次。Browserify多次解析同一個文件
note#1:我猜測說,browserify會根據字符串緩存文件,所以當調用來自不同位置的相對路徑不會有相同的字符串時,即使它們指向相同的位置。
注意#2:我在使用Browserify 3〜直到現在,只有當我升級它開始發生。
實施例:
鑑於:
app.js
/folder1/foo.js
/folder2/bar.js
/folder1/foo.js:
function Foo(){}
module.exports = new Foo(); // Creating a singleton
/folder2/bar.js
var foo = require('../folder1/foo');
function Bar(){
// do something with foo
}
module.exports = Bar;
/app.js
var foo = require('./folder1/foo'),
Bar = require('./folder2/bar');
var bar = new Bar();
// Now 'foo' here and 'foo' inside Bar are not the same instance.
但是這意味着我根本不能使用Singletons,所以它不是一個解決方案 –