использование .env файла в приложение собранном electronJS

Рейтинг: 0Ответов: 1Опубликовано: 28.04.2023

Возникла проблема необходимо использовать переменные окружения для подключения к БД в десктопном приложение собранном с помощью ElectronJS. Старый синтаксис позволял использовать функцию remote, но его убрали из-за проблем с безопасностью, сейчас рекомендуется использовать ipcRenderer и ipcMain. Но скомпилированное приложение упаковывает этот файл в само приложение и когда необходимо что-то поменять, приходится перекомпилировать приложение. Упаковываю с помощью electron-bulder. Есть ли возможность как то вынести его наружу. Или использовать какой-то другой подход для передачи настроек подключения к БД?

что использую сейчас: в main.js -

const { app, BrowserWindow, ipcMain } = require('electron');
const dotenv = require('dotenv')
const fs = require('fs')

let mainWindow;

const envConfig = dotenv.parse(fs.readFileSync(`${__dirname}/.env`))

ipcMain.on('get-env-variables', (event) => {
    event.returnValue = envConfig
})

в render.js -

const { ipcRenderer } = require('electron')

const envVariables = ipcRenderer.sendSync('get-env-variables')

const configLKA = {
    user: envVariables.DB_LKA_USER,
    password: envVariables.DB_LKA_PASSWORD,
    server: envVariables.DB_LKA_HOST,
    database: envVariables.DB_LKA_DB,
    options: {
        encrypt: true,
    }
};

package.json -

  "name": "desktop",
  "version": "1.0.0",
  "description": "test",
  "main": "main.js",
  "scripts": {
    "start": "electron-forge start",
    "test": "echo \"Error: no test specified\" && exit 1",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "pack": "electron-builder --dir",
    "dist": "electron-builder"
  },
  "build": {
    "appId": "com.my-electron-app",
    "productName": "My Electron App",
    "extraFiles": [
      {
        "from": ".env",
        "to": ".env",
        "filter": [
          "**/*"
        ]
      }
    ],
    "directories": {
      "output": "dist"
    },
    "win": {
      "target": "nsis"
    },
    "mac": {
      "target": "dmg"
    },
    "linux": {
      "target": "AppImage"
    }
  },

Ответы

▲ 0

нашел способ через добавление .env файла не в extraFiles, а в asarUnpack - "asarUnpack": [ ".env" ] Осталось добавить шифрование .env и какой-то интерфейс для его изменения, тогда наверное и выносить из архива его и в принципе не нужно будет