ブラウザ開発で自作の外部パーツライブラリからBufferを使いたい。



  • JavaScriptの経験が浅く、調べてみましたが分からなかったので質問させてください。

    自作のパーツライブラリを使いプログラムを動かそうとしています。Node.js上では正常に動くのですが、obnizCloudのブラウザからパーツライブラリを動かそうとするとReferenceError: Buffer is not definedというエラーが出てしまいます。

    ブラウザ開発でパーツライブラリを作成してobniz.jsのBufferを使いたい場合どのようにすればよいでしょうか?

    UnitVCamera.jsという自作のパーツライブラリをリポジトリに置いた状態でHTMLのヘッダで読み込んでいます。(jsファイルの読み込みはできているようです。)

    参考にしたのはJpegSerialCamのindex.jsですが、下記のbase64を変換するところでエラーが出てしまいます。

        arrayToBase64(array) {
            return Buffer.from(array).toString("base64");
        }
    

    https://github.com/obniz/obniz/blob/master/dist/src/parts/Camera/JpegSerialCam/index.js#L58-L60

    https://obniz.io/users/2489/repo/Grove_UnitVAICamera.js



  • @Takao-Akaki さん

    Buffferはnode.jsでは使えるけれども、ブラウザからは使えないクラスになります。
    そのため、ブラウザでBufferを使いたい場合は、互換品のライブラリを使用することでBufferとほぼ同等のことをすることができます。

    obniz.js内でも同じことをしていますが、obniz.jsで使っているものは外からBuffer互換品クラスにアクセスできるようになっていないので、別のものを使う必要があります。

    自分がよく使っている互換品は、こちらの記事のものなので、試してみていただければと思います。
    https://r17n.page/2019/11/26/node-buffer-in-browser-from-cdn/


Log in to reply
 

SUGGESTED TOPICS