我需要在构建时将.env
文件放入打包的应用程序中,然后将.env
的变量附加到process.env
。我把.env
放在与package.json
相同的目录中,当我从npm启动电子时,它就工作了。当我建立一个MacOS应用程序并启动它时,它将不起作用(似乎.env
文件丢失了)。
我的main.js
启动了一个java后端,所以我提供了环境变量:
// This works in npm start, but not for packed app
process.env.MY_VAR = dotenv.config().parsed.MY_VAR;
this.serverProcess = require("child_process").spawn(
"/usr/bin/env",
["sh", dirname + "/server/bin/embedded"],
{ env: process.env });
我的情况是:
- 生成
.env
并放入电子文件夹(由构建系统自动生成) - 构建电子和封装电子
electron-builder --mac --publish never
- 启动MacOS App
- 打包的应用程序应该在提供的环境下运行java(来自
.env
)
是否有一个例子或最佳实践如何把环境变量,而包构建?
dotenvExpand
做到了。
const dotenvExpand = require("dotenv-expand");
if (process.resourcesPath) {
dotenvExpand.expand(dotenv.config({ path: path.join(process.resourcesPath, ".env") }));
}