繁体   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