如何在电子+反应环境中使用使用对话框?

时间:2019-04-08 20:18:03

标签: javascript node.js reactjs electron

clone the repo & try it

我正在使用node,create-react-app和electronic来开发桌面应用程序。下一行recommended here

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

添加到我的store反应成分中(因此不在电子主过程中)时,会导致以下错误:

TypeError: fs.existsSync is not a function
getElectronPath
F:/freelance/repos/creative-ontology-editor/node_modules/electron/index.js:8
   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) {

我相信这是因为React或create-react-app专门阻止/无效了诸如fs之类的某些node.js模块,但是我可能是错的。请注意,当我在上面的行中(而不是在我自己的代码中)包含上述行时,此错误发生在electron模块的内部中。

我的目标是使我的桌面应用程序能够像Word或Excel一样将文件保存并加载到用户的计算机上。

我在我的react组件中调用了const fs = window.require('fs');,我认为我不应该这样做,但是,因为这是在实际的electron模块的index.js中,所以我确保它也调用它,它会这样做:var fs = require('fs')。当我将react组件中的呼叫切换到const fs = window.require('fs')时,行为没有变化。

在电子主过程中,我还确保将webPreferences.nodeIntegration设置为true,无济于事。

0 个答案:

没有答案