日々ブログ

当サイトは、アフィリエイトプログラムにより商品をご紹介しています

【プログラミングのお話】viteでbuffer をインポートできないときの対処法

過去に、viteでelectronを使用していたときに困ったので、メモ代わりに記載しておきます。

viteではbufferをインポートできない

javascript上では、import と書いてあるのですが、requireをサポートしていないというエラーが出ています。requireがbufferの内部で使われていることによるエラーですね。

webpackではインポートできる

歴史の古いwebpackでは問題なくインポートできます。
このあたりは、さすが成熟したフレームワークって感じですね。
viteの方は書き方について厳格ということでしょうか。
性能を重視したviteがwebpackより汎用性が低いのはある程度仕方が無いことでしょうか。

拡張プラグインをインストールすることでimport エラーが解消する

vite-plugin-node-polyfillsをインストールすることで解決しました。

npm install -D vite-plugin-node-polyfills

上のプラグインをviteの設定ファイルに記述します。

上記を追加したあと無事に画面が映るようになりました。

下記の記事を参考にしました。

stackoverflow.com

失敗事例:browserlifyをかける

node.js専用に実装されたjavascriptをブラウザでも動く方法としてbrowserlifyがあります。
簡単に言うと、node.js固有のライブラリや書き方をブラウザで動くように自動で置き換えてくれる仕組みですね。
こちらを試して見たのですが結論から言うと駄目でした。
どうも、webpack向けの書き方に変換するようで、viteでは禁止されている構文が含まれてしまってインポートエラーが起きます。

browserify.org

メモ:browserlifyの使い方

せっかく、調べたので個人用のメモとしてbrowserifyの使い方をメモしておきます。 まずは、グローバル領域にインストール

npm install -g browserify

対象のスクリプトファイルを第一引数に-oのあとに生成後のファイルパスを入力します。

browserify target.js -o result.js