簡體   English   中英

電子在生產模式下運行

[英]Electron run in production mode

我正在使用 npm 包https://github.com/sindresorhus/electron-is-dev

出於某種原因, isDev總是返回 true。

我的 npm 腳本如下所示:

"start:prod": "cross-env NODE_ENV=production && electron dist/main.js"

主要.js:

import isDev from 'electron-is-dev';

app.on('ready', () => {
  console.log('isDev', isDev);
  if (!isDev) {
    const {session} = require('electron');
    session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
      callback({responseHeaders: `default-src http: ws:`})
    })
  }
  const win = createWindow();
  createMenu(win);
});

控制台輸出:

isDev true

文檔提到:

您可以通過將 ELECTRON_IS_DEV 環境變量設置為 1 來強制開發模式。

但我不認為將變量設置為零是必要的。

輸出process.env.ELECTRON_IS_DEV日志未定義。

我發現了以下令人困惑的線程: https : //github.com/electron/electron/issues/7714

當您在啟動時設置 NODE_ENV 時,我沒有看到使用額外的環境變量......除非有令人信服的理由不這樣做,否則我只會像我習慣的那樣檢查process.env.NODE_ENV

我不使用那個 npm 包,但我會分享我所做的 - (不知道它是對還是錯,但它有效。我在開發過程中使用它來運行electron-reload )。

package.json – 在我的“開始”腳本中設置一個環境變量

  "scripts": {
    "start": "APP_DEV=true electron ."
   }

main.js - 檢查“main.js”中的環境變量

var isDev = process.env.APP_DEV ? (process.env.APP_DEV.trim() == "true") : false;

用它

if (isDev) {
    require('electron-reload')(__dirname, {
        electron: upath.toUnix(upath.join(__dirname, 'node_modules', '.bin', 'electron'))
    });
}

更新: 4.28.20

不得不將我的項目帶到 Windows 機器上以解決一些特定於 Windows 的問題,而上述方法在那里不起作用。 這是我對此的問題以及使其在 Windows 上運行的答案:在 package.json 中設置一個環境變量以用於電子重新加載?

我注意到開發中的process.env變量包含有關 npm_package 的信息,這在生產構建中是不存在的。 檢查process.env.npm_node_execpath為我提供了有關 prod 或 dev 的信息。

您可以為此使用電子內置變量app.isPackaged可以在此處找到https://www.electronjs.org/docs/api/app#appispackaged-readonly添加以下行以自行檢查

console.log(app.isPackaged);

別的

如果您使用的是 Electron-is-dev,則使用

"start": "set ELECTRON_IS_DEV=0 && electron ."

這會將環境設置為生產。 並將其設置回 DEV 將 0 替換為 1。

參考資料 - https://www.geeksforgeeks.org/manage-staging-environments-in-electronjs/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM