electron 预加载脚本未运行/与电子一起正常工作

46scxncf  于 2022-12-16  发布在  Electron
关注(0)|答案(1)|浏览(245)

我一直试图让一个预加载脚本运行在我的电子应用程序,但它似乎要么没有运行在所有或只是没有正常工作。
我现在有一个主文件,一个预加载文件,一个渲染文件,和一个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:
一个二个一个一个
目前我在render.js的HTML输出是“这个应用程序正在使用Chrome(vundefined),Node.js(vundefined)和Electron(vundefined)”,我在main.js中的console.log行抛出了一个ReferenceError,声明“版本未定义”。有人能告诉我如何解决这个问题吗?提前感谢。

vuv7lop3

vuv7lop31#

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

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

应为(添加“s”以处理.version

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

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

相关问题