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

Electron中preload.js引入dotenv模块提示找不到的问题求助

解决Electron preload.js无法加载dotenv模块的问题

方法一:将dotenv移至生产依赖

dotenv当前作为devDependencies安装,Electron运行时无法直接访问开发依赖中的模块,执行以下命令将其转为生产依赖:

npm uninstall dotenv --save-dev && npm install dotenv --save

重启应用后,preload.js即可正常加载dotenv。

方法二:主进程加载环境变量,通过contextBridge传递(推荐)

更安全合规的做法是在主进程中加载环境变量,再通过preload将需要的变量暴露给渲染进程:

  1. 主进程(如main.js)中加载dotenv:
require('dotenv').config();
const { app, BrowserWindow } = require('electron');

// 其他主进程初始化代码
  1. preload.js中暴露指定环境变量:
const { contextBridge } = require('electron');

// 仅暴露业务需要的变量,避免泄露敏感信息
contextBridge.exposeInMainWorld('appEnv', {
  apiBaseUrl: process.env.API_BASE_URL,
  appKey: process.env.APP_KEY
});

渲染进程中可通过window.appEnv.apiBaseUrl访问对应的环境变量。

方法三:手动指定dotenv的绝对路径(临时方案)

如果不想调整依赖类型,可通过绝对路径直接引入dotenv的配置文件(需根据项目结构调整路径):

const { contextBridge } = require('electron');
const path = require('path');

// 指向node_modules中的dotenv/config.js文件
require(path.join(__dirname, '../node_modules/dotenv/config'));

// 后续业务代码

注意事项

  • Electron 22+默认开启contextIsolation,必须通过contextBridge向渲染进程暴露变量,禁止直接修改window对象。
  • 禁止暴露整个process.env,仅按需暴露必要的环境变量,降低安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:27:52