有条件地将电子导入本机Web应用程序

时间:2020-03-10 00:30:37

标签: javascript react-native electron electron-builder react-native-web

我目前有一个同时针对Android和Electron的react-native-web应用。

我已经在应用程序中添加了电子快捷方式,并且我在React组件中使用ipcRenderer来监听加速器并运行特定于React的代码。

问题是,除非我将ipcRenderer导入到.web.js文件中,否则在运行Android时会收到以下错误:

Unable to resolve module `fs` from `/Users/.../node_modules/electron/index.js`: Module `fs` does not exist in the Haste module map

引起问题的代码段:

if (isElectron()) {
    const { ipcRenderer } = require('electron'); <-- this line

我尝试将导入内容包装在Platform.OS这样的条件中

if (Platform.OS === 'web') {
    const isElectron = require('is-electron');

    if (isElectron()) {
        const { ipcRenderer } = require('electron');

但是我仍然收到相同的错误。

谢谢:)

1 个答案:

答案 0 :(得分:1)

找到了解决我的问题的方法:)

我制作了2个文件

ipcRenderer.js包含导出的空对象

ipcRenderer.web.js包含isElectron()支票,并且从电子中导出了空值或ipcRenderer