在package.json中设置env-var以用于电子重新加载



我通常在macOS上开发,但为了解决一些特定于Windows的问题,我已经将项目转移到了Windows 10上。我使用electron-reload在进行更改时重新加载应用程序。它在macOS上运行得很好,但在Windows上坏了。

使用下面的设置和npm start启动应用程序,在Windows上会抛出一个错误:"'APP__DEV' is not recognized as an internal or external command"

我是不是做错了,macOS只是更"宽容"了?我看到了这个问题:在package.json中设置process.env-var,得到的答案看起来和我正在做的一样,所以我很困惑。

在我跳进兔子洞之前,我想我会问我所做的事情是否有什么简单的问题。

如果重要的话——在将项目迁移到Windows时,我没有对CTLF等进行任何转换——我只是使用DropBox将其复制过来。


package.json

"start": "APP_DEV=true electron .",

Main.js

let isDev = process.env.APP_DEV ? (process.env.APP_DEV.trim() == "true") : false;
if (isDev) {
require('electron-reload')(__dirname);
}

语法ENV_VAR=value program arguments是UNIX的一部分。Windows不提供在同一命令中设置环境变量和运行程序的方法,但是,这通常会起作用:set ENV_VAR=value && program arguments(因此,在您的情况下:set APP_DEV=true && electron .就是您要查找的(。作为一个建议,看看dotenv和/或cross-os,让你的项目在所有系统上都更可用(在这方面(,而不会太头疼。

您是否尝试将参数移动到electron命令("electron"(和src位置("."(之后?

APP_DEV不存在:

"start": "APP_DEV=true electron ."

APP_DEV确实存在:

"start": "electron . APP_DEV=true"

编辑:

上面提到的方法不能作为环境变量检索,而只能作为过程参数检索。不确定这是否能够解决您的问题。

string[] argument = process.argv;

最新更新