首页 > 解决方案 > 将 React 与 Electron 一起使用,以便仍然可以使用 Node.js 原生模块

问题描述

我正在尝试在我的 React 应用程序中使用crypto.scrypt() Node.js Crypto,在 Electron v11.2.1 中运行。

目前,我正在使用react-scripts start启动开发服务器。

然后我启动 Electron 应用程序,它在main.js中的配置如下:

mainWindow.loadURL('http://localhost:3000');

在我的反应应用程序中:

const nodeCrypto = require('crypto');

问题:如果我这样做console.log(nodeCrypto),对象不包含scryptor scryptSync


另一方面,如果我创建了一个新的简单 Electron 项目并且不使用 React,而是像这样配置它:

main.js 中

mainWindow.loadFile('index.html');

index.html中:

<script>
    require('./renderer.js');
</script>

renderer.js中:

const nodeCrypto = require('crypto');

console.log(nodeCrypto);

正如我所期望的那样,我可以在控制台日志中看到scrypt和。scryptSyncnodeCrypto


现在,我的理论是这样的:因为 React 应用程序是“单独”运行的http://localhost:3000,所以它不是crypto从本机 Node.js 模块使用,而是从其他地方使用它。我可能是错的。

我的问题是......我怎样才能在开发服务器中运行 React 应用程序(以便在开发过程中实时重新加载)但仍然可以访问像cryptoElectron 内部的 Node.js 原生模块?

标签: node.jsreactjselectron

解决方案


推荐阅读