update
This commit is contained in:
48
scripts/start.js
Normal file
48
scripts/start.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* 启动脚本:清除 ELECTRON_RUN_AS_NODE 等会干扰 Electron 的环境变量,
|
||||
* 然后直接 spawn electron.exe
|
||||
*
|
||||
* 解决 Git Bash / npm 环境里 ELECTRON_RUN_AS_NODE=1 导致 Electron 退化为 Node.js 的问题
|
||||
*/
|
||||
const path = require('path');
|
||||
const { spawn } = require('child_process');
|
||||
|
||||
// 关键:清除会让 Electron 退化为普通 Node 的环境变量
|
||||
delete process.env.ELECTRON_RUN_AS_NODE;
|
||||
// 一些 npm/终端 会设置 ELECTRON_NO_ASAR,也清掉
|
||||
delete process.env.ELECTRON_NO_ASAR;
|
||||
|
||||
const electronExe = path.join(
|
||||
__dirname,
|
||||
'..',
|
||||
'node_modules',
|
||||
'electron',
|
||||
'dist',
|
||||
'electron.exe'
|
||||
);
|
||||
|
||||
const args = [path.join(__dirname, '..'), ...process.argv.slice(2)];
|
||||
|
||||
console.log('Starting Electron:', electronExe);
|
||||
console.log('Args:', args);
|
||||
|
||||
const child = spawn(electronExe, args, {
|
||||
stdio: 'inherit',
|
||||
windowsHide: false,
|
||||
env: process.env,
|
||||
});
|
||||
|
||||
child.on('error', (err) => {
|
||||
// spawn 在可执行文件不存在(npm install 没跑 / 路径损坏)时只触发 'error',
|
||||
// 不会触发 'exit'——不显式监听会让脚本静默挂起,用户只能强退。
|
||||
console.error(`启动 Electron 失败:${err.message}`);
|
||||
console.error(`请确认已运行 npm install,路径:${electronExe}`);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
child.on('exit', (code, signal) => {
|
||||
// Electron 进程被信号杀掉时 code === null、signal 是 'SIGTERM' / 'SIGINT' 等,
|
||||
// 旧实现会静默吞掉、显示成「成功退出 0」,调试 SIGTERM 路径会很迷惑。
|
||||
if (signal) console.log(`Electron exited via signal: ${signal}`);
|
||||
process.exit(code ?? 0);
|
||||
});
|
||||
Reference in New Issue
Block a user