在电子包装应用程序中构建时放置env文件



我需要在构建时将.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") }));
}

最新更新