使用Electron

时间:2018-11-22 08:04:21

标签: reactjs electron

所以我知道对渲染线程没有反应,我可以这样做以打开文件对话框。

const {dialog} = require('electron').remote
dialog.showOpenDialog({properties: ['openFile']}))

我正在尝试使用react和学习React&Electron的工作流程。进行要求会给我以下错误。

TypeError: fs.existsSync is not a function
getElectronPath
   5 | var pathFile = path.join(__dirname, 'path.txt');
   6 | 
   7 | function getElectronPath() {
>  8 |   if (fs.existsSync(pathFile)) {
   9 |     var executablePath = fs.readFileSync(pathFile, 'utf-8');
  10 | 
  11 |     if (process.env.ELECTRON_OVERRIDE_DIST_PATH) {
View compiled
(anonymous function)
  18 |   }
  19 | }
  20 | 
> 21 | module.exports = getElectronPath();
View compiled

不确定如何做才能完成这项工作。应该是一个非常简单的画布绘图应用程序,但是我确实需要枚举文件夹中的图像并为应用程序提供文件对话框功能。有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。您可以在创建时将preload.js运行到一个窗口中,然后调用诸如javascript对象之类的项目。

在github上发现了这个问题 https://github.com/electron/electron/issues/9920

  mainWindow = new BrowserWindow({
    width: 800, 
    height: 600,
    webPreferences: {
      nodeIntegration: false,
      preload: __dirname + '/preload.js'
    }
  });

Preload.js

const { dialog } = require('electron').remote.dialog;
window.electron = {};
window.electron.dialog = dialog;

然后,我想加载到窗口中的所有内容都可以添加到window.electron对象中,并可以毫无问题地调用它。反应预编译器比电子问题更重要。