电子在生产模式下运行

时间:2019-11-24 15:08:29

标签: javascript electron

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

由于某些原因,isDev始终返回true。

我的npm脚本如下:

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

main.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至。

2 个答案:

答案 0 :(得分:0)

我不使用该npm软件包,但我会分享我的工作-(不知道它是对还是错,但它可以工作。我在开发过程中使用它运行electron-reload)。

package.json –在“开始”脚本中设置环境变量

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

main.js -检查“ main.js”中的env变量

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'))
    });
}

答案 1 :(得分:0)

我注意到开发中的process.env变量包含有关生产构建中不存在的npm_package的信息。 检查process.env.npm_node_execpath会给我有关生产或开发的信息。