预加载脚本不能正常运行/工作与电子



我一直试图在我的电子应用程序上运行预加载脚本,但它似乎根本没有运行或只是不能正常工作。

我目前有一个主文件,一个预加载文件,一个渲染文件和一个html。我只是想做电子教程中关于使用预加载文件的东西,所以现在我的代码是这样的:

// main.js
const {app, BrowserWindow, ipcMain, Menu} = require('electron');
const url = require('url');
const path = require('path');
let mainWindow;
const createWindow = () => {
// Create a window
mainWindow = new BrowserWindow({
show: false,
autoHideMenuBar: true,
webPreferences: ({
preload: path.join(__dirname, 'scripts', 'preload.js'),
nodeIntegration: true,
}),
});
mainWindow.maximize();
mainWindow.show();
// Load HTML into window
mainWindow.loadFile('index.html');
// Open Dev Tools
// mainWindow.webContents.openDevTools();
console.log(versions);
}
// preload.js
const {contextBridge} = require('electron');
contextBridge.exposeInMainWorld('versions', {
node: () => process.version.node,
chrome: () => process.version.chrome,
electron: () => process.version.electron,
});

index . html:

<html lang="en">
<head>
<meta charset="UTF-8">
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self'"
/>
<meta
http-equiv="X-Content-Security-Policy"
content="default-src 'self'; script-src 'self'"
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./css/style.css">
<title>Test</title>
</head>
<body>
<h1>Test</h1>
<p id="info"></p>
<script>window.$ = window.jQuery = require('jquery');</script>
<script src="render.js"></script>
</body>
// render.js
const information = document.getElementById('info');
information.innerText = `This app is using Chrome (v${versions.chrome()}), 
Node.js (v${versions.node()}), and Electron (v
${versions.electron()})`

目前我从render.js输出的HTML是"这个应用程序使用Chrome (vundefined),Node.js (vundefined),和电子(vundefined)"我的console.log行在main.js抛出了一个ReferenceError,声明"版本未定义"。有人能告诉我怎么解决这个问题吗?提前谢谢。

我想你打错字了:在预加载脚本

contextBridge.exposeInMainWorld('versions', {
node: () => process.version.node,
chrome: () => process.version.chrome,
electron: () => process.version.electron,
});

应该是(加">s)";process.version

contextBridge.exposeInMainWorld('versions', {
node: () => **process.versions.node,
chrome: () => **process.versions.chrome,
electron: () => **process.versions.electron,
});

可以看一下文档:https://www.electronjs.org/docs/latest/api/process

相关内容

最新更新