Cloudflare Workers Buffer.from()

Dug*_*Dug 7 javascript buffer cloudflare-workers

我不太熟悉缓冲区及其工作原理。

在节点我可以做

const str = "dasjkiodjsiodjpasiodfjodifjaspiofjsdioajfpasodfjsdioa";
let buff = Buffer.from(str); // <Buffer 64 61 73 6a 6b 6 etc...
let buffHex = Buffer.from(str, 'hex');

console.log(buff)
Run Code Online (Sandbox Code Playgroud)

我将如何在 Cloudflare Workers 中执行此操作,因为我得到ReferenceError: Buffer is not defined

Ken*_*rda 11

Buffer是一个节点 API。Cloudflare Workers 基于 Web 平台 API,就像您在浏览器中找到的那样。网络平台的替代方案BufferUint8Array. 您可以使用TextEncoderTextDecoderAPI 在 UTF-8 编码的 s 和文本字符串之间进行转换Uint8Array

let bytes = new TextEncoder().encode(str);
Run Code Online (Sandbox Code Playgroud)

要将 a 转换Uint8Array为十六进制,您可以使用如下函数:

function bytes2hex(bytes) {
  return Array.prototype.map.call(bytes,
      byte => ('0' + byte.toString(16)).slice(-2)).join('');
}
Run Code Online (Sandbox Code Playgroud)

我不建议Buffer为此使用polyfill,因为它会增加你的代码大小。直接使用比较好Uint8Array

一般来说,您应该能够在 Stack Overflow 上找到有关如何执行常见操作的答案Uint8Array