我正在开发一个电子应用程序。一切都很好,直到我想从渲染器中使用IPC来调用一些原生功能。我知道将下面这行代码添加到我的Webpack配置中将允许我在渲染器端导入电子。
module.exports = {
// ...
target: 'electron-renderer',
}
添加此行时出现以下错误
Uncaught ReferenceError: require is not defined
令人不快的一行是
module.exports = require("querystring");
这在某种程度上是有意义的,因为浏览器不理解"requires“。
请注意,如果没有electron-renderer
目标,应用程序将正常工作,除非我无法执行以下操作
import {ipcRenderer} from 'electron';
有没有想过我做错了什么?谢谢!
发布于 2019-03-19 21:34:05
最近才遇到这个问题。要注意的一件事是确保在创建渲染器窗口时将nodeIntegration设置为true。
mainWindow = new electron.BrowserWindow({
width: width,
height: height,
webPreferences: {
nodeIntegration: true
}
});
发布于 2021-04-06 18:08:32
同样面对这个问题,新的答案:
mainWindow = new electron.BrowserWindow({
width: width,
height: height,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
发布于 2021-10-18 02:29:32
AFAIU推荐的方式是(在preload.js
脚本中)使用contextBridge
模块。它允许您保持启用上下文隔离,但安全地将您的API暴露在网站运行的上下文中。
https://www.electronjs.org/docs/latest/tutorial/context-isolation
通过这种方式,我还发现不再需要在Webpack配置中指定target
属性。
https://stackoverflow.com/questions/55233839
复制相似问题