Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8898

ElectronでMacOSのkeychainにアクセスしようとしてハマったこと

$
0
0

仕事ではWebアプリケーションしか作らない私。
勉強をかねてElectronでデスクトップアプリ開発をしている中でどハマりした部分を記事にしておく。

やりたいこと

MacOSのkeychainにIDとパスワードを保存して手軽に再ログインできるようにしたい。
node-keytarを使用すれば簡単にできるとのこと
https://github.com/atom/node-keytar

やったこと

electron-react-boilerplateで開始
https://github.com/electron-react-boilerplate/electron-react-boilerplate

git clone --depth 1 --single-branch https://github.com/electron-react-boilerplate/electron-react-boilerplate.git kontamProject
cd kontamProject

とりあえずkeytarを導入してyarn install

yarn add keytar
yarn install

下記をapp/main.dev.tsの先頭に追加して雑に動作確認する

importkeytarfrom'keytar';keytar.setPassword('kontamService','account','my-password');keytar.getPassword('kontamService','account').then(password=>console.log('testing keytar',password));

keychainに適当な文字列を入れて、それを取り出してconsole出力できることを試したかった

で、とりあえず起動してみる

yarn dev

ハマったこと

そうするとこんなエラーが出る

App threw an error during load
Error: Module did not self-register.
    at process.func (electron/js2c/asar.js:140:31)
    at process.func [as dlopen] (electron/js2c/asar.js:140:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:922:18)
    at Object.func (electron/js2c/asar.js:140:31)
    at Object.func [as .node] (electron/js2c/asar.js:140:31)
    at Module.load (internal/modules/cjs/loader.js:735:32)
    at Module._load (internal/modules/cjs/loader.js:648:12)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Module.require (internal/modules/cjs/loader.js:775:19)

Webやっててこんなエラーは見たことがない。
割と汎用的なエラーっぽくてググってもなかなかいい答えが見つからない

解決法

electron-rebuildによって解決する プロジェクトルートでinstall

yarn add electron-rebuild

そして実行

npx electron-rebuild

そうするとkeytarがリビルドされるようなメッセージが出るはず

そのあと実行

yarn dev

そうすると無事boilerplateのアプリが起動した。
コンソールには以下の出力があり、keytarが想定通り動いたことがわかる。

testing keytar my-password

結局何が問題だったのか

Electronのメインプロセス つまりNode.js上で動作するパッケージはElectronのバージョンに応じてリビルドする必要があるらしい。
electron-rebuildはそういったパッケージをまとめて1コマンドでリビルドしてくれるパッケージとのこと

なかなかググっても解決法が見つからずに長時間ハマったので、この記事が他の誰かの役に立つことを祈る


Viewing all articles
Browse latest Browse all 8898

Trending Articles