2016-06-23 7 views
2

FSモジュール(fs.writeFile)を使用して、ファイルにデータを書き込む必要があります。私のスタックはwebpack + react + redux + electronです。Electron.Atom WebPackアプリケーション内でFSモジュールを使用するには?

最初の問題は:モジュール 'fs'を解決できません。 私はいくつかの試みの後

target: "node", 
--- 
node: { 
    global: true, 
    fs: "empty", 
} 
--- 
resolve: { 
    root: path.join(__dirname), 
    fallback: path.join(__dirname, 'node_modules'), 
    modulesDirectories: ['node_modules'], 
    extensions: ['', '.json', '.js', '.jsx', '.scss', '.png', '.jpg', '.jpeg', '.gif'] 
}, 

を使用しようと、問題が解決される(ノード:{FS: "空の"})。しかし、2番目の問題がありました:screenshot

//In method componentDidMount (React) 
console.log('fs', fs); 
console.log('typeOf', typeof fs.writeFile); 

//By clicking on the button 
console.log(fs); 
console.log(typeof fs.writeFile); 

あなたはFSは空のオブジェクトではなく、法のWriteFileは全く存在していることを、見ることができます。私はwebpackの設定を変更しようとしました。この場合

const path = require('path'); 
const fs = require('fs'); 
const webpack = require("webpack"); 
console.log(fs); 

が空でないFS。

この問題を解決するにはどうすればよいですか?何か案は?

答えて

9

問題が解決しました。あなたは(すなわち、main.js)メイン電子プロセスにこれを追加しました

var remote = require('electron').remote; 
var electronFs = remote.require('fs'); 
var electronDialog = remote.dialog; 
+0

は、電子アプリ(バンドルを追加する場所)での使用が必要ですか?私はこれらの定義を追加しましたが、それらと何をするべきかわかりません... –

+0

['electron.remote'](https://electron.atom.io/docs/api/remote/)を必ず読んでください。 : "Electronでは、GUI関連モジュール(ダイアログ、メニューなど)はレンダラープロセスではなく、メインプロセスでのみ使用できます。レンダラープロセスからそれらを使用するためには、プロセス間のメッセージをメインプロセスに明示的に送信することなく、メインプロセスオブジェクトのメソッドを呼び出すことができます " –

関連する問題