如何在Electron.Atom \ WebPack应用程序中使用FS模块?

时间:2016-06-23 14:23:55

标签: javascript node.js reactjs npm electron

我需要使用FS模块(fs.writeFile)在文件中写入一些数据。我的堆栈是webpack + react + redux + electron。

第一个问题是:无法解析模块'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']
},

经过多次尝试后,问题得以解决( node:{fs:“empty”} )。但后来出现了第二个问题: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 不为空。

如何解决这个问题?有什么想法吗?

2 个答案:

答案 0 :(得分:14)

问题解决了。

需要在电子应用中使用(添加捆绑包的地方):

 primes = []

 if primes[len(primes) - 1] > 3:
      ......

答案 1 :(得分:0)

完成接受的答案。

如果您使用的是 Webpack 。就像您使用Angular,React或其他框架时一样。 require将由webpack解决。

改为使用window.require

例如:

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

注意:无需使用远程命令即可从渲染器进程访问任何节点api。由于它完全暴露在外。

const fs = window.require('fs');
const path = window.require('path');

会的。