tl;dr
- Node.js 15.3.0 では直っている
- Node.js 16がもうじき出るので、出たらLTSでもM1 Macネイティブ対応できてよさそう
FAST_REFRESH
環境変数にfalse
を設定してyarn start
するのでも回避できる- Node.js本体のバージョンを上げられないけどM1 Macを使いたいときはこうすることになる?
- あるいはRosetta経由でNode.jsをインストールすると回避できる? (未確認)
起こったこと
Node.js 14.16.1 で、 create-react-app
で作ったばかりのアプリケーションを yarn start
で立ち上げる (実体は react-scripts start
) と、以下のようなスタックトレースが出てアプリケーションの立ち上げに失敗した。
Starting the development server... <--- Last few GCs ---> [57242:0x138008000] 1858 ms: Scavenge 88.9 (121.6) -> 79.7 (121.6) MB, 5.1 / 0.0 ms (average mu = 0.993, current mu = 0.993) task <--- JS stacktrace ---> FATAL ERROR: wasm code commit Allocation failed - process out of memory 1: 0x100ce19d8 node::Abort() [/Users/utgwkk/.nodenv/versions/14.16.1/bin/node] (省略)
yarn build
や yarn test
は問題なく動いた。
原因と対処方法
症状としては以下のissueに挙がっているものに近そう。
react-refresh-webpack-pluginというライブラリの機能を使うときにエラーになっているらしい。
Node.js 本体の以下のコミットで直っており、Node.js 15.3.0のリリースに含まれている、ということなのでNode.js 15.3.0以降では直っている。
また、 env FAST_REFRESH=false yarn start
のように FAST_REFRESH
環境変数を設定する*1のでもひとまず回避できる。Node.js本体のバージョンを上げられないけどM1 Macを使って開発したい場合はこうすることになりそう。あるいはRosettaを使ってNode.jsをインストールするとか?