Closed13

【失敗】Cloudflare Pages上のRemixにChakra UIを適用したいので調査する

ピン留めされたアイテム
WhyKWhyK

結論

  • Chakra UIはEmotionに依存している
  • Emotionは内部的にNode.js APIのBufferを参照している部分がある
  • Cloudflare PagesやCloudflare WorkersはV8をネイティブ実行しているため、Node.js APIを参照しようとすると未定義エラーを吐く
  • Chakra UIを利用したい場合はCloudflareを避けるしか現状では方法がない
  • Cloudflareを使うならEmotion依存のUIフレームワークは使えないものとしてUIデザインを組む
WhyKWhyK

Vueで作っていたものをRemixに置き換えようと思い、移行先としてCloudflare Pagesを検討していた。
https://github.com/rwl-dev-playground/learn-remix-cloudflare

しかし、移行時に使おうと思っていたChakra UIが以下のエラーでデプロイできなかった。

Uncaught ReferenceError: Buffer is not defined

https://github.com/rwl-dev-playground/learn-remix-cloudflare/pull/1#issuecomment-1478112743

上記のリポジトリでは他にも色々と変更を加えていて、単純な調査には使えなさそうだったので、別個検証用のリポジトリを作成することにした。
https://github.com/rwl-dev-playground/verify-chakra-on-remix-cloudflare

WhyKWhyK

比較用のRemix App Serverも加え、以下の3つで動作検証をする。

  • Remix App Server
  • Cloudflare Pages
  • Cloudflare Workers
WhyKWhyK

初期設定状態で動作するか確認し、すべて動作。

WhyKWhyK

Remix App ServerでChakra UIが問題なく動作したことを確認。

WhyKWhyK

依存関係にNode.jsのBufferを読ませてglobalThis.Bufferに突っ込む荒業も紹介されていたが、これも動かなかった。
ダメそう。

WhyKWhyK

今回、Chakra UIを使いたいモチベーションは一部のUI部品を置き換えたいというだけなので、採用せずTailwind CSSで部品を自作する方向に倒すことにする。

このスクラップは2023/03/23にクローズされました