我正在学习如何构建电子应用程序,我不明白为什么我一直得到这个错误来打印我的文件夹的当前目录。有人能解释一下吗
我试着在网上看了一些关于这方面的文章,但还是看不懂
我的Html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bookmark</title>
</head>
<body>
<h1>Hello Bookmark</h1>
<button class = "alert" onclick="dir()">Click here</button>
<script>
const button = document.querySelector('.alert');
button.addEventListener('click', () => {
alert(__dirname);
});
</script>
</body>
</html>
我的main.js
const {path} = require('path');
const {app, BrowserWindow} = require('electron');
let mainWindow = null;
app.on('ready', () => {
console.log("Hello from Electron");
mainWindow = new BrowserWindow();
mainWindow.webContents.loadFile(`index.html`);
})
package.json
{
"name": "bookmark",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "electron .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"electron": "^25.0.1"
}
}
顺便说一句,我正在通过阅读一本关于用Electron构建桌面应用程序的书来学习,我认为它已经相当过时了。有人能在2023年提出更好的材料吗?
1条答案
按热度按时间p4tfgftt1#
你应该把渲染器进程(运行html页面的进程)当作一个浏览器窗口,只需要几个额外的钩子。它曾经更加开放,但多年来Electron已经收紧了其安全模型。
请参阅https://www.electronjs.org/docs/latest/tutorial/process-model,其中大约一半的地方说:
渲染器进程可以通过完整的Node.js环境生成,以便于开发。从历史上看,这曾经是默认设置,但出于安全原因,此功能被禁用。
获取当前目录并在渲染器进程中显示它的一种方法是在它和主进程之间进行IPC。有关各种方法,请参见https://www.electronjs.org/docs/latest/tutorial/ipc。
我会避免那些没有提到使用预加载脚本和contextBridge的书籍和教程,因为它们已经过时了。避免为Electron 13或更早版本编写的任何内容。