You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Electron Forge构建的可执行文件设置环境变量?

为Electron Forge应用传递环境变量到最终可执行文件的正确方法

一、打包时注入静态环境变量(推荐用于固定配置)

如果你的环境变量是构建阶段确定的(比如版本号、固定文件路径),可以通过Webpack的DefinePlugin将变量直接嵌入到应用代码中,打包后可执行文件就能直接读取这些值。

操作步骤:

  1. 确认你的Electron Forge项目使用了Webpack插件(webpack或webpack-typescript模板默认已集成)。
  2. 修改forge.config.js,指定Webpack配置文件路径:
module.exports = {
  // 其他配置项...
  plugins: [
    {
      name: '@electron-forge/plugin-webpack',
      config: {
        mainConfig: './webpack.main.config.js',
        renderer: {
          config: './webpack.renderer.config.js',
          entryPoints: [{ html: './src/index.html', js: './src/renderer.js', name: 'main_window' }]
        }
      }
    }
  ]
};
  1. 在主进程配置文件webpack.main.config.js中添加DefinePlugin:
const { DefinePlugin } = require('webpack');

module.exports = {
  // 其他主进程配置...
  plugins: [
    new DefinePlugin({
      'process.env.DB_PATH_RELATIVE': JSON.stringify(process.env.DB_PATH_RELATIVE),
      'process.env.DB_CURRENT_VERSION': JSON.stringify(process.env.DB_CURRENT_VERSION)
    })
  ]
};
  1. 若需在渲染进程中访问变量,在webpack.renderer.config.js中添加相同的DefinePlugin配置即可。

构建时Webpack会自动将代码中所有对应process.env变量替换为实际值,打包后的可执行文件无需额外配置就能读取这些变量。

二、运行时动态传递环境变量(用于可变配置)

如果需要在启动可执行文件时动态设置环境变量,主进程可直接读取process.env,但不同系统的设置方式有差异:

Windows(命令提示符):

set DB_PATH_RELATIVE=./data/db.sqlite && your-app.exe

Windows(PowerShell):

$env:DB_PATH_RELATIVE="./data/db.sqlite"; .\your-app.exe

Linux/macOS:

DB_PATH_RELATIVE=./data/db.sqlite ./your-app

注意:渲染进程默认无法直接访问主进程的process.env,需通过IPC通信传递:

  1. 主进程(main.js):
const { ipcMain } = require('electron');

ipcMain.handle('get-env-variable', (_, key) => {
  return process.env[key];
});
  1. 渲染进程(renderer.js):
const { ipcRenderer } = require('electron');

async function getEnvVar(key) {
  return await ipcRenderer.invoke('get-env-variable', key);
}

// 使用示例
getEnvVar('DB_PATH_RELATIVE').then(path => console.log(path));

三、常见误区说明

  • 你之前在forge.config.js中设置的env字段,仅用于Electron Forge自身的构建流程,不会传递到应用运行环境。
  • package.json脚本中用cross-env设置的变量,仅在构建过程中有效(比如forge.config.js能读取),不会被打包到最终可执行文件中。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:05:09