首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向webpack添加电子渲染器时‘'Require is not defined’

向webpack添加电子渲染器时‘'Require is not defined’
EN

Stack Overflow用户
提问于 2019-03-19 04:49:45
回答 3查看 7K关注 0票数 11

我正在开发一个电子应用程序。一切都很好,直到我想从渲染器中使用IPC来调用一些原生功能。我知道将下面这行代码添加到我的Webpack配置中将允许我在渲染器端导入电子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
    // ...
    target: 'electron-renderer',
}

添加此行时出现以下错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Uncaught ReferenceError: require is not defined

令人不快的一行是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = require("querystring");

这在某种程度上是有意义的,因为浏览器不理解"requires“。

请注意,如果没有electron-renderer目标,应用程序将正常工作,除非我无法执行以下操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {ipcRenderer} from 'electron';

有没有想过我做错了什么?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2019-03-19 21:34:05

最近才遇到这个问题。要注意的一件事是确保在创建渲染器窗口时将nodeIntegration设置为true。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mainWindow = new electron.BrowserWindow({
    width: width,
    height: height,
    webPreferences: {
        nodeIntegration: true
    }
});
票数 17
EN

Stack Overflow用户

发布于 2021-04-06 18:08:32

同样面对这个问题,新的答案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mainWindow = new electron.BrowserWindow({
    width: width,
    height: height,
    webPreferences: {
        nodeIntegration: true,
        contextIsolation: false
    }
});
票数 13
EN

Stack Overflow用户

发布于 2021-10-18 02:29:32

AFAIU推荐的方式是(在preload.js脚本中)使用contextBridge模块。它允许您保持启用上下文隔离,但安全地将您的API暴露在网站运行的上下文中。

https://www.electronjs.org/docs/latest/tutorial/context-isolation

通过这种方式,我还发现不再需要在Webpack配置中指定target属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55233839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文