Dev*_*Dev 4 javascript electron
我有一个电子应用程序。我需要从本地计算机获取环境变量的值以在渲染器线程上使用。我想在应用程序启动时将此值传递给渲染器线程。我知道在main.js文件中,我可以像这样获取环境变量:
main.js
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600
});
win.loadFile('index.html');
// Retrieve the environment variable value
const variableValue = process.env.MY_ENVIRONMENT_VARIABLE;
console.log(`Variable value: ${variableValue}`);
// Send the variable and it's value to the renderer.
win.webContents.send('initialize', { 'variableName':variableValue });
}
Run Code Online (Sandbox Code Playgroud)
上面成功地将环境变量的值打印到终端窗口。但是,我需要在浏览器端使用这个值。我如何在那里获取变量的值?
谢谢你!
这不能直接从渲染器进程(关闭nodeIntegration)完成,因为它无法直接访问 Node.jsprocess变量。
最直接的方法是通过 BrowserWindow 的预加载脚本,它允许您通过 Electron 的contextBridgeAPI 向渲染器进程公开任意数据。一个例子:
// Main Process
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'); // require `path` if you haven't already
}
});
Run Code Online (Sandbox Code Playgroud)
// Preload Script
const { contextBridge } = require('electron');
// this should print out the value of MY_ENVIRONMENT_VARIABLE
console.log(process.env.MY_ENVIRONMENT_VARIABLE);
contextBridge.exposeInMainWorld('envVars', {
myEnvironmentVariable: process.env.MY_ENVIRONMENT_VARIABLE
});
Run Code Online (Sandbox Code Playgroud)
// Renderer Process
console.log(window.envVars.myEnvironmentVariable)
Run Code Online (Sandbox Code Playgroud)
请参阅 contextBridge API 文档:https://www.electronjs.org/docs/latest/api/context-bridge
| 归档时间: |
|
| 查看次数: |
4493 次 |
| 最近记录: |