Back

在 Electron + React 中使用 Node.js 模块

Electron 相当于提供了一个桌面式的 Chrome 浏览器环境,在通常情况下,渲染线程中的代码是无法直接使用 Node.js 的模块的,如果要在 Electron 的渲染线程中使用 Node.js 模块,需要进行额外配置。

🤔 问题

如果在 Electron 中使用 React,在 React 组件中调用 Node.js 模块会抛出错误,告知你模块或者模块中的方法不存在,这是因为默认情况下 Electron 模拟的是纯浏览器环境,而浏览器中自然无法直接使用 Node.js 模块,如果需要使用 Node.js 模块,需要进行额外的配置。

🎉 解决方法

在创建 Electron 中的 BrowserWindow 对象的时候,进行额外配置,启用 webPreferences 中的 nodeIntegrationnodeIntegrationInWorker,使之支持 Node.js 模块:

let window = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
        nodeIntegration: true,
        nodeIntegrationInWorker: true
    }
});

完成这一步后,如果使用了 babel 进行编译,则可以直接使用:

import path from 'path';

这样的形式引用 Node.js 模块,如果没有使用 babel,则需要使用:

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

来引用 Node.js 模块。

©2017-2021 Copyright kindem.xyz / 湘ICP备17018771号-1
Built with Hugo
Theme Stack designed by Jimmy