LoginSignup
3
2

pnpmを使ってElectronをビルドした時に起動しない問題の修正

Posted at

はじめに

Electron+Next.jsでデスクトップアプリの開発をしています。
解決方法としては簡単だったのですが、長時間バグに悩まされたので記録に残します

問題

Electronをビルドした後に、アプリを起動したところ以下のエラーが発生しました。

Uncaught Exception:
Error: Cannot find module ‘form-data’
Require stack:

  • /Applications/Fabriid.app/Contents/Resources/app.asar/node_modules/axios/dist/node/axios.cjs
  • /Applications/Fabriid.app/Contents/Resources/app.asar/main/index.js

at node:internal/modules/cjs/loader:1084:15
at Function._resolveFilename (node:electron/js2c/browser_init:2:117419)
at node:internal/modules/cjs/loader:929:27
at Function._load (node:electron/js2c/asar_bundle:2:13377)
at Module.require (node:internal/modules/cjs/loader:1150:19)
at require (node:internal/modules/cjs/helpers:110:18)
at Object. > (/Applications/Fabriid.app/Contents/Resources/app.asar/node_modules/axios/dist/node/axios.cjs:4:20)
at Module._compile (node:internal/modules/cjs/loader:1271:14)
at Object..js (node:internal/modules/cjs/loader:1326:10)
at Module.load (node:internal/modules/cjs/loader:1126:32)

electron-error.png

解決方法

問題は pnpm にありました。そして、ちゃんとドキュメントにも記載されていました。

electron-builder かつ pnpm を使っている場合、以下を .npmrc に記載する必要があります。

node-linker=hoisted
public-hoist-pattern=*
shamefully-hoist=true

.npmrc の場所はこちらを参考にしてください。
同じチームメンバーも同じ問題にハマってしまうので、pnpm-workspace.yaml に記載のフォルダの配下に書くと良いかもしれないですね。

pnpm config コマンドを使用して、ユーザーおよびグローバルの .npmrc ファイルの内容を更新および編集することができます。

関連する4つのファイルは次のとおりです。

  • プロジェクトごとの設定ファイル(/path/to/my/project/.npmrc)
  • ワークスペースごとの設定ファイル (pnpm-workspace.yaml ファイルが含まれているディレクトリー)
  • ユーザーごとの設定ファイル(~/.npmrc)
  • グローバルな設定ファイル (/etc/npmrc)

上記を設定し再度実行すればエラーは消えているはずです!

おわりに

英語読む拒絶反応から半日以上時間を溶かしてしまいました。ドキュメントは公式のをしっかり読みましょう(自戒)

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2