はじめに
Electron+Next.jsでデスクトップを開発しています。
ElectronのバージョンとNext.jsのバージョンをあげたときにエラーが発生しました。
macOSも同時期にsonomaにアップデートしました。
問題
MacOSでElectronを開発モードで起動した時だけ以下のエラーが発生しました。
本番ビルドすると正常に動作していました。
- バージョン
- macOS 14.3
- electron 27.1.2
dyld[94108]: Library not loaded: @rpath/Electron Framework.framework/Electron Framework
Referenced from: /folder/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron
Reason: tried: '/folder/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/folder/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/System/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file, not in dyld cache)
/folder/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron exited with signal SIGABRT
ELIFECYCLE Command failed with exit code 1.
解決方法
問題はmacOSでElectronをビルドした時に、シンボリックリンクが正常に貼られていないことが原因でした。
自分のアプリのソースコードにある node_modules/electron
の dist
ファイルを削除して、 npm run postinstall
を実行すると正常に動作します。
cd app_root/node_modules/electron
rm -r dist
npm run postinstall
cd ../..
pnpm dev # 自分のアプリのdev起動方法で!
これで問題なく動きました。
バグが修正されるまでは、スクリプトを作るなりで対応する必要がありそうです。
おわりに
すぐにバージョン上げた時のエラー処理には意外と時間かかってしまうので、タイミングを考える必要がありますね..