gpt4 book ai didi

javascript - 未捕获的ReferenceError : require is not defined - Electron js

转载 作者:行者123 更新时间:2023-12-03 12:43:17 25 4
gpt4 key购买 nike

我第一次与js和node同时使用 Electron ,我正在尝试为爱好和知识做一个应用程序。
我在实现脚本以打开外部链接时遇到问题。

我一直在使用doc来解决问题,但是我没有看到任何可以帮助我解决该问题的方法。

我的前links.js

const electron = require("electron");
const { shell } = electron;
const exLinkBtn = document.getElementById("open-ex-link");
exLinkBtn.addEventListener("click", function() {
shell.openExternal("https://www.youtube.com/watch?v=ifXalt3MJtM");
});

我已经尝试过将slideler.html放置在index.html中,但是仍然出现该错误,因此我将其保留为当前在iframe中的位置。

<iframe src="slider.html" frameborder=0 width="1180" height="728" style="padding-left:198.5px;"></iframe>

我希望通过单击open-ex-link按钮,它将在默认浏览器中打开链接。

最佳答案

缺省nodeIntegration值为false。因此,您可以将其设置为true来解决此问题。

app.on('ready', () => {
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true
}
});
});

但是,当您在应用程序上执行一些不受信任的远程代码时, nodeIntegration: true会带来安全风险。例如,当您的应用程序打开第三方网页时,这将带来安全风险,因为第三方网页将有权访问节点运行时并可以在用户的​​文件系统上运行恶意代码。因此,将 nodeIntegration: false设置为现在的默认值是有意义的。

您可以使用预加载脚本,因为它们可以访问 require和其他Node.js功能。

index.js就像:
const mainWindow = new BrowserWindow({
webPreferences: {
preload: path.join(app.getAppPath(), 'preload.js')
}
})

preload.js类似于:
const { remote } = require('electron');

let currentWindow = remote.BrowserWindow.getFocusedWindow();

window.closeCurrentWindow = function(){
currentWindow.close();
}

关于javascript - 未捕获的ReferenceError : require is not defined - Electron js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com