app和autoUpdater在reactjs中不可用,但在nodejs中可用

时间:2017-08-29 11:58:14

标签: javascript node.js reactjs electron ecmascript-5

我遇到了电子问题。或者反应,我不知道。 我正在尝试创建一个React.Component来使用electron.autoUpdater。

我正在使用

import {app, autoUpdater, dialog} from 'electron';
反应组件中的

,但这些类都不可用。当使用require('electron')(这是正常的,ok)时,它们在nodejs中可用,但在reactjs中不可用。但其余组件都在那里!

我应该包含或需要了解的内容吗? 在nodejs中,可用的模块是:

{ clipboard: [Getter],
  crashReporter: [Getter],
  nativeImage: [Getter],
  shell: [Getter],
  app: [Getter],
  autoUpdater: [Getter],
  BrowserView: [Getter],
  BrowserWindow: [Getter],
  contentTracing: [Getter],
  dialog: [Getter],
  globalShortcut: [Getter],
  ipcMain: [Getter],
  Menu: [Getter],
  MenuItem: [Getter],
  net: [Getter],
  Notification: [Getter],
  powerMonitor: [Getter],
  powerSaveBlocker: [Getter],
  protocol: [Getter],
  screen: [Getter],
  session: [Getter],
  systemPreferences: [Getter],
  TouchBar: [Getter],
  Tray: [Getter],
  webContents: [Getter] }

在反应中,可用的组件是:

clipboard, crashReporter, desktopCapturer, 
ipcRenderer, nativeImage, remote, screen, shell, webFrame.

我尝试使用window.require('electron');该命令有效,但这些模块仍然不可用

提前谢谢

1 个答案:

答案 0 :(得分:0)

我想我发现了这个问题。 这个答案帮助了我: https://github.com/electron/electron/issues/9920#issuecomment-318986025

这个想法是app,autoUpdater和很多其他组件都可以在electron.remote上找到 我不知道为什么,但关键字" remote"表示您在主进程中使用相同的应用程序,autoUpdater等。 还有其他解释吗?

PS:如果此解决方案有效,我会告诉您。

NOTSOLATEREDIT:

这是我的解决方案,并且运作顺畅。有没有更好的方法呢?

import electron from 'electron';
const app = electron.remote.app;
const autoUpdater = electron.remote.autoUpdater;
const dialog = electron.remote.dialog;