运行以下 Electron 应用程序时,我未获得所需的输出,即包含pwd作为输出的警报框。但是,index.html内的注释行似乎可以正常工作。 Chrome窗口的开发者控制台显示“Uncaught ReferenceError:在HTMLButtonElement。
有什么建议?
package.json如下{
"name": "bookmarker",
"version": "1.0.0",
"description": "electron app",
"main": "./app/main.js",
"scripts": {
"start": "electron .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Wasim Aftab",
"license": "ISC",
"dependencies": {
"electron": "^9.0.0"
}
}
main.js如下const {app, BrowserWindow} = require('electron');
let mainWindow = null;
app.on ('ready', () => {
console.log('Hello, from electron');
mainWindow = new BrowserWindow();
mainWindow.webContents.loadFile(__dirname + '/index.html');
});
index.html如下<!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>
</body>
<script>
const button = document.querySelector('.alert');
button.addEventListener('click', () => {
alert(__dirname);
// alert(window.location.pathname.replace(/[^\\\/]*$/, ''));
});
</script>
</html>
最佳答案
__dirname
是一个nodejs概念,在浏览器中不存在。
解决此问题的一种方法是将nodeIntegration
设置为true
:
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true
}
});
另一种方法是使用预加载脚本(始终为预加载脚本启用nodeIntegration):
mainWindow = new BrowserWindow({
webPreferences: {
preload: (__dirname + "/preload.js")
}
});
然后在
preload.js
文件中:window.__dirname = __dirname
关于javascript - alert(__ dirname)在 Electron 应用程序中不产生任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62048570/