問題描述
首先,我知道這是一個只有初學者才會問的問題,但是在經歷了 50 多種不同的解決方案、卸載 npm 和安裝 yarn 之后,我不得不問這個令人難以置信的愚蠢問題.為什么這不起作用?我想使用 ElectronJS 實現一個簡單的標題欄,我遇到的問題是按鈕(關閉/最小化/最大化)不起作用.我收到的錯誤如下:
First of all, I know that this is a question only a beginner would ask, but after going through more than 50 different solutions, uninstalling npm and installing yarn I have to ask this incredible dumb question. Why doesnt this work? I want to implement a simple titlebar using ElectronJS, the problem that I have is that the buttons (Close / Minimize / Maximize) do not work. The errors that I receive are the following:
最小化錯誤:titlebar.js:16 Uncaught TypeError: Cannot read property 'BrowserWindow' of undefined at HTMLButtonElement.maximizeApp (titlebar.js:16)
最大化錯誤:titlebar.js:16 Uncaught TypeError: Cannot read property 'BrowserWindow' of undefined at HTMLButtonElement.maximizeApp (titlebar.js:16)
退出錯誤:titlebar.js:21 Uncaught TypeError: Cannot read property 'getCurrentWindow' of undefined at HTMLButtonElement.quitApp (titlebar.js:21)
我用來控制它的 JavaScript 文件稱為 titlebar.js.就是這樣:
The JavaScript file that I use to control this is called titlebar.js. This is it:
const remote_v = require("electron").remote;
var minimize_v = document.getElementById("minimize");
var maximize_v = document.getElementById("maximize");
var quit_v = document.getElementById("quit");
minimize_v.addEventListener("click",minimizeApp);
maximize_v.addEventListener("click",maximizeApp);
quit_v.addEventListener("click",quitApp);
function minimizeApp(){
remote_v.BrowserWindow.getFocusedWindow().minimize();
}
function maximizeApp(){
remote_v.BrowserWindow.getFocusedWindow().maximize();
}
function quitApp(){
remote_v.getCurrentWindow().close();
}
由于許多其他類似問題的修復都在渲染過程中,這是 HTML 文件:
Since many of the fixes for other problems like this is in the render process, this is the HTML File:
<!DOCTYPE html>
<head>
<title>Visionizer</title>
<link rel="stylesheet" href="css/editor.css">
<link rel="stylesheet" href="css/titlebar.css" >
</head>
<body>
<div class="container">
<div class="titlebar titlebarStyle">
<div class="windowTitle"> Visionizer </div>
<div class="windowControls windowControlsStyle">
<button id="minimize">-</button>
<button id="maximize">[]</button>
<button id="quit">x</button>
</div>
</div>
<div class="editorScreen">
</div>
</div>
<script src="js/titlebar.js"></script>
</body>
</html>
關于這個的奇怪之處在于,經過多次嘗試,我決定從 github 的教程中復制代碼,我認為我的代碼中可能有一個錯誤,我太笨了,看不到.它仍然沒有運行.我使用 npm
卸載了該軟件包,并使用 yarn global add electron@latest
使用 yarn
安裝了它,因為有人建議這樣做.
The weird thing about this is that, after much trying, I decided to copy the code from the tutorial from github, I thought that there may have been an error in my code that I was too dumb to see. It still didn't run. I uninstalled the package with npm
and installed it with yarn
using yarn global add electron@latest
since some people suggested this.
我根本不知道這是否重要,但我也會從下面的 main.js 文件中復制我的代碼,因為我想確保我包含了所有內容:
I do not know whether this is important at all, but I will also copy my code from the main.js-file below since I want to be sure that I included everything:
const { app, BrowserWindow } = require('electron')
function createWindow () {
const win = new BrowserWindow({
width: 900,
height: 800,
minHeight: 650,
minWidth: 600,
frame: false,
webPreferences: {
nodeIntegration: true
}
})
win.loadFile('editor.html')
win.webContents.openDevTools()
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
這是 package.json 文件:
And here is the package.json file:
{
"dependencies": {
"electron": "^11.0.2"
},
"name": "*******",
"version": "1.0.0",
"description": "**********",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"author": "************",
"license": "MIT"
}
網上的一些問題回答說項目啟動錯誤,我聽從了他們的建議,我使用yarn start
命令啟動我的項目
Some questions on the internet were answered by saying that the project was started wrongly, I followed their advice, I start my projects using the yarn start
command
感謝您閱讀本文.
推薦答案
看起來你的 remote
模塊是 undefined
.
It looks like your remote
module is undefined
.
您需要設置 enableRemoteModule: true
在主窗口的 webPreferences
中,或者更好的是,完全廢棄 remote
并從主進程中執行這些操作.
You'd want to set enableRemoteModule: true
in your main window's webPreferences
, or better yet, scrap remote
altogether and do these operations from the main process.
remote
模塊在 中被禁用電子 10.
這篇關于ElectronJS:未捕獲的類型錯誤:無法讀取屬性“BrowserWindow"/“獲取當前窗口"未定義的的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!