2017-04-05 7 views
4

私はelectrontype(16.6.2)を使用してkeytar(3.0.2)をprod依存関係としてパッケージ化しています。電子キー付きパッケージKeytar

package.jsonファイルが含まれています:

"scripts": { 
    "postinstall": "install-app-deps", 
    "compile:dev": "webpack-dev-server --hot --host 0.0.0.0 --config=./webpack.dev.config.js", 
    "compile": "webpack --config webpack.build.config.js", 
    "dist": "yarn compile && build" 
}, 
"build": { 
    "appId": "com.myproject", 
    "asar": true, 
    "files": [ 
     "bin", 
     "node_modules", 
     "main.js" 
    ] 
} 

私は、同じシステム上に.appを実行すると、それがうまく動作します。別のシステムで実行しようとすると(あるいはnode_modulesを削除しても)、keytar.nodeを見つけることができません。 keytarがビルドされるとき、私のシステムのためのそのイメージへの完全修飾されたパスを含みます。コンソールで次のエラーが表示されます。

Uncaught Error: Cannot open /Users/Kevin/Work/myproject/node_modules/keytar/build/Release/keytar.node 
Error: dlopen(/Users/Kevin/Work/myproject/node_modules/keytar/build/Release/keytar.node, 
1): image not found 

ビルドプロセスの手順が欠落している必要があります。

答えて

2

レンダラープロセスでkeytarを使用していました。私はkeytarをメインプロセス(Webpack/Babelを経由しない)に移し、電子ビルダーによって正しくパックされました。

main.js私が呼び出すことができるレンダラープロセスから次に

ipcMain.on('get-password', (event, user) => { 
    event.returnValue = keytar.getPassword('ServiceName', user); 
}); 

ipcMain.on('set-password', (event, user, pass) => { 
    event.returnValue = keytar.replacePassword('ServiceName', user, pass); 
}); 

const password = ipcRenderer.sendSync('get-password', user); 

または

ipcRenderer.sendSync('set-password', user, pass); 
関連する問題