解決したいこと
Electronのモジュールがimportできない
Electronのメインプロセス側のコードもES Modules
で統一しようとした際にこの問題が起こりました。
解決方法を教えて下さい。
発生している問題・エラー
import
でElectronのモジュールをロード
main.js
1'use strict' 2 3// モジュールロード 4import pkg from 'electron'; 5const { app, Menu, BrowserWindow, dialog } = pkg; 6 7// 中身を確認 8console.log(pkg) 9console.log(app) 10console.log(Menu) 11
実行結果
javascript
1// pkg 2// /Users/~ 省略 ~/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron 3// app 4// undefined 5// Menu 6// undefined 7 8// UnhandledPromiseRejectionWarning: TypeError: Cannot read properties of undefined (reading 'buildFromTemplate')
pkg
はElectronのモジュールがある場所のファイルパスを返しているapp
やMenu
などはundefined
を返す- なのでそれ以降で
app
やMenu
のモジュール内の関数などを使おうとするとUnhandledPromiseRejectionWarning: TypeError: Cannot read properties of undefined (reading '')
のエラーが出る
- なのでそれ以降で
自分で試したこと
この記事に沿ってES Modulesに置き換えました。
https://qiita.com/Satachito/items/990b1a8d8c1a551037e6
package.json
に"type" : "modules"
を追加main.cjs
を作りpackage.json
に"main" : "main.cjs"
と修正main.cjs
は以下コード
global.require = require global.__dirname = __dirname import( './main.js' )
package.json
に"asar": false
を追加- 既存のコードをES Modulesに書き換え
const app = pkg.app
のように書き換えても時効結果は同じundefinedでした
調べてもめぼしい情報が見つけられなくて困っています。
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/22 03:32