2015-02-06 115 views
0

我想在Chrome打包的應用程序中使用一些node.js模塊。 (我說的串口)Browserify並擴展Buffer.prototype

我已經延長了緩衝原型加入「的indexOf」方法。

我使用Browserify,什麼似乎是發生的是它不拿起我的原型擴展。我的緩衝區最終成爲沒有indexOf可用的Uint8Arrays。

有沒有一種方法可以讓Browserify選擇Buffer?

我的擴展看起來是這樣,但我也試着NPM軟件包做同樣的事情(下面的代碼是從一個提升),所以我覺得這個問題不一定在我的代碼:

Buffer.indexOf = function(haystack, needle, i) { 
    if (!Buffer.isBuffer(needle)) { 
     needle = new Buffer(needle); 
    } 

if (typeof i === 'undefined') { 
    i = 0; 
} 

var l = haystack.length - needle.length + 1; 

while (i < l) { 
    var good = true; 
    for (var j = 0, n = needle.length; j < n; j++) { 
     if (haystack.get(i + j) !== needle.get(j)) { 
      good = false; 
      break; 
     } 
    } 
    if (good) { 
     return i; 
    } 
    i++; 
} 

return -1; 
}; 

Buffer.prototype.indexOf = function(needle, i) { 
    return Buffer.indexOf(this, needle, i); 
} 
+1

它是Chrome應用程序還是Chrome擴展程序?請修改以使用正確的標記。 – 2015-02-06 23:33:09

回答

0

有一招的方式,Browserify將拿起延長緩衝?

我對此表示懷疑,因爲browserify有自己的Buffer實現。

但更糟糕的是,使用您的模塊的任何其他模塊會受到您更改爲Buffer.prototype的影響。不是擴展核心組件的原型,而應該創建一個輔助函數。

+0

我試着用Buffer原型製作一個'MyBuffer'類,並對其進行了擴展,但這也沒有奏效。我的'MyBuffer'對象仍然變成了Uint8Arrays。 有太多令人興奮的方式來保存字節... – 2015-02-07 01:40:37