2014-09-30 82 views
0

我有一個名爲constants的模塊。 Browserify未能捆綁該模塊作爲其名稱衝突與lib/builtins定義的內置模塊:當名稱與內置函數衝突時,Browserify隱藏模塊

exports.constants = require.resolve('constants-browserify'); 

這種效果可在生成的代碼中觀察到。例如,取決於一個constants模塊顯示:

{ 
    //... 
    12:[ 
    function(require,module,exports){...}, 
    {"util":6,"constants":2} 
    ] 

我們看到,模塊12依賴於模塊2(的constants的索引)。與指數2模塊的定義是:

2:[ 
    function(require,module,exports){ 
    module.exports={ 
     "O_RDONLY": 0, 
     "O_WRONLY": 1, 
     "O_RDWR": 2 
     // ... 
    } 
    }, 
    {} 
] 

那些O_*常量在constants-browserify定義,而不是在我的constants模塊。

我使用的NPM包從內杯和指定以下options

return browserify('./main.js', { 
     basedir: './scripts/app/', 
     paths: ['./scripts/app/'], 
     builtins: [] 
    }) 
    .bundle() 
    .pipe(source('main.js')) 
    .pipe(gulp.dest('dist')); 

我希望指定builtins[](我試過{}太)將覆蓋此行爲,但似乎只有解決模塊undefined在生成代碼:

12:[ 
    function(require,module,exports){...}, 
    {"util":6,"constants":undefined} 
] 

問題:

  • 主:有沒有辦法告訴browserify不要試圖更換我的模塊?
  • 爲什麼browserify想要指定這些內置函數?我不明白他們是如何需要的。

回答

0

我發現這種方法唯一的辦法是手動排除您碰到的內建函數。

假設你遇到與constantsnull碰撞,你可以使用:

browserify('./main.js', { 
    builtins: {constants:null, util:null} 
}); 
+0

我創建了一個[關於這個話題的問題(https://github.com/substack/node-browserify/issues/925)。 – 2014-09-30 18:00:17