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