我正在关注Electron quick start guide,它可以正常工作,但输出结果与文档中描述的不一样,带有document.write
的版本将不会显示在输出中。
这是我的输出:
Hello World!
We are using node , Chrome , and Electron .
我的预期输出将包括相应的版本号。
我已经检查了该应用程序的GitHub页面,还是一样,尝试了各种StackOverflow答案,但没有一个适合我。
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using node <script>document.write(process.versions.node) </script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron) </script>.
</body>
</html>
package.json
{
"name": "electronapp",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"author": "harsh",
"license": "ISC",
"devDependencies": {
"electron": "^5.0.2"
}
}
main.js
const {app, BrowserWindow} = require('electron')
const path = require('path')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
mainWindow.loadFile('index.html')
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', createWindow)
app.on('window-all-closed', function () {
if (process.platform !== 'darwin')
app.quit()
})
app.on('activate', function () {
if (mainWindow === null)
createWindow()
})
我已全局安装Node,Chrome与Electron打包在一起了,对吗?
答案 0 :(得分:3)
经过大量搜索,我找到了这个:
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
请注意,在 2021 年 2 月发布的 Electron 12 之前,contextIsolation
默认为 false。
答案 1 :(得分:1)
如果激活开发人员工具,则应该在控制台中看到如下错误消息:
Uncaught ReferenceError: process is not defined
at index.html:11
您需要激活BrowserWindow中的nodeIntegration
,以便允许在BrowserWindow中运行的进程(“渲染器进程”)访问Node的process
对象。
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
答案 2 :(得分:1)
这是您要更正的文件
const {app, BrowserWindow} = require('electron')
const path = require('path')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
// I think you don't need this line
// preload: path.join(__dirname, 'preload.js')
nodeIntegration: true
}
})
mainWindow.loadFile('index.html')
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', createWindow)
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', function () {
if (mainWindow === null) createWindow()
})
答案 3 :(得分:0)
您最多会这样更改代码
const { app, BrowserWindow, process } = require('electron')