如何将缓冲区中的 TYPED_ARRAY_SUPPORT 强制为 false 以响应本机?

How to force TYPED_ARRAY_SUPPORT in buffer to false for react native?

我在 React Native 中使用了大量使用节点模块的包。我已经设法通过在其他节点模块加载之前填充我需要的关键模块来使它们全部运行。我填充的关键模块是 buffer.

但是,我在缓冲区的代码中发现了一些错误。称它为错误可能是不合适的,因为缓冲区从来没有打算在本机运行时执行。

切片时,缓冲区会检查是否支持类型化数组。如果是,则使用 typedArray.subarray 方法执行切片。如果没有,请手动执行我们自己的切片。

此代码片段说明了这一点

if (Buffer.TYPED_ARRAY_SUPPORT) {
    newBuf = Buffer._augment(this.subarray(start, end))
} else {
    var sliceLen = end - start
    newBuf = new Buffer(sliceLen, undefined)
    for (var i = 0; i < sliceLen; i++) {
        newBuf[i] = this[i + start]
    }
}

问题是,typed arrays are not supported in react native。不知何故 TYPED_ARRAY_SUPPORT 在执行时为真。

我注意到,如果我在调试器中将全局命名空间中的 TYPED_ARRAY_SUPPORT 更改为 true(Buffer.TYPED_ARRAY_SUPPORT 根据 global.TYPED_ARRAY_SUPPORT 定义设置),我的代码将执行漂亮地。

如何将 global.TYPED_ARRAY_SUPPORT = false 填入全局命名空间?出于某种原因,我试图填充它并没有一直到 Buffer,而其他模块正在填充。

我试图用它绕过 Buffer 的方法最终没有奏效,但我确实想出了如何将 TYPED_ARRAY_SUPPORT 注入全局命名空间,以防有人需要知道。

只需将 global.Buffer.TYPED_ARRAY_SUPPORT = false; 放入 global.js 并在您的 global.js 中尽可能早地在应用程序中填充,以确保它在其他任何事情之前执行。

这是一个扩展此过程的类似问题