2015-02-06 117 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