gpt4 book ai didi

javascript - 在ElectronJS应用中无法在渲染器进程中访问__dirname变量

转载 作者:行者123 更新时间:2023-12-03 12:30:42 28 4
gpt4 key购买 nike

我现在正在尝试从“ Electron in Action ”(https://www.amazon.com/Electron-Action-Steve-Kinney/dp/1617294144/)这本书中学习ElectronJS。
我遇到的一点困难是,我通过加载到Renderer Process窗口中的HTML文件中<script>标记内的JS代码,尝试访问__dirname变量(通常仅在node中可用,而在 Electron ,也应该可用于Chromium环境)。
对于感兴趣的人,它是 list 2.8 (第28页)。这是代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; connect-src *">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bookmarker</title>
</head>

<body>
<h1>Hello from Electron</h1>
<p>
<button class="alert">Current Directory</button>
</p>

<script>
const button = document.querySelector('.alert');

button.addEventListener('click', ()=> {alert(__dirname);});
</script>
</body>
</html>
这是Main流程的代码:
const {app, BrowserWindow} = require('electron');

let main_window = null;

app.on('ready',
() =>
{
console.log('Hello from Electron');
main_window = new BrowserWindow();

main_window.webContents.loadFile('app/index.html');
}
);

但这是行不通的。在“渲染窗口”的开发人员控制台中,每当我单击按钮时,都会产生错误,指出未定义 __dirname
我在下面附上错误消息的屏幕截图:
The Error Log
我该如何解决这个问题?提前致谢。

最佳答案

创建窗口时,在main.js中将nodeIntegration设置为true

    mainWindow = new BrowserWindow({
width: 600,
height: 300,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration:true
}
})

关于javascript - 在ElectronJS应用中无法在渲染器进程中访问__dirname变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63628494/

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