Javascript 生产模式下的电子运行

Javascript 生产模式下的电子运行,javascript,electron,Javascript,Electron,我正在使用npm软件包 由于某些原因,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) {

我正在使用npm软件包

由于某些原因,
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\u的日志未定义

我发现以下我感到困惑的线索:


我看不到在启动时设置NODE_ENV时使用额外的环境变量。。。除非有令人信服的理由不这样做,否则我将像往常一样检查
process.env.NODE\u env

我不使用npm软件包,但我会分享我的做法–(不知道它是对还是错,但它是有效的。我在开发过程中使用它来运行
电子重新加载

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

  "scripts": {
    "start": "APP_DEV=true electron ."
   }
main.js-检查“main.js”中的环境变量

使用它

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

更新:4.28.20


我不得不把我的项目带到一台Windows机器上处理一些特定于Windows的问题,而上面的方法在那里不起作用。下面是我的问题和一个在Windows上运行的答案:

我注意到开发中的
process.env
变量包含生产构建中缺少的有关npm_包的信息。
检查
process.env.npm_node_execpath
会给我提供有关产品或开发的信息。

开发工具是指电子窗口中的检查面板,还是指其他内容。@ameer我不知道我在哪里提到了开发工具……这样做是否有利于只使用默认的node_env变量?@Trace-constance,我不知道。我已经这样做了几年了,不记得了——我想我在使用默认NODE_ENV变量时遇到了一些问题。上面的方法奏效了,所以我继续做其他事情。好的,谢谢@NoGrabbing(lol)。彼此彼此。我会用这个;如果问题迟早会出现,或者(最好)永远不会出现。
if (isDev) {
    require('electron-reload')(__dirname, {
        electron: upath.toUnix(upath.join(__dirname, 'node_modules', '.bin', 'electron'))
    });
}