panrouter 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/pool-worker.mjs +32 -24
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "panrouter",
3
- "version": "6.2.0",
3
+ "version": "6.3.0",
4
4
  "description": "让 Claude Code 免费使用 DeepSeek 等模型,无需 API Key",
5
5
  "type": "module",
6
6
  "bin": {
package/pool-worker.mjs CHANGED
@@ -256,11 +256,7 @@ async function doRestart() {
256
256
  clearTimeout(reconnectTimer);
257
257
  reconnectTimer = null;
258
258
  }
259
- const serverOk = await ensureServer();
260
- if (!serverOk) {
261
- log("代理服务重启失败", "ERR");
262
- process.exit(1);
263
- }
259
+ await ensureServer();
264
260
  reconnectDelay = WS_RECONNECT_BASE;
265
261
  writePid();
266
262
  connectToHub();
@@ -403,7 +399,7 @@ function isPortOpen(port) {
403
399
 
404
400
  // ─── 后台确保 9router 在运行(不阻塞注册)───────────────────────────────
405
401
 
406
- let _serverReady = false; // 9router 是否可用
402
+ let _serverReady = false;
407
403
 
408
404
  function isServerReady() { return _serverReady; }
409
405
 
@@ -414,30 +410,42 @@ async function ensureServer() {
414
410
  return;
415
411
  }
416
412
 
417
- // 跑你的安装脚本(负责检查、安装、注入数据库,不依赖它启动)
418
413
  const setupScript = path.join(__dirname, "setup-9router.cjs");
419
- if (fs.existsSync(setupScript)) {
420
- log("正在执行 9router 部署脚本...");
421
- spawn(process.execPath, [setupScript], {
422
- cwd: __dirname, stdio: "ignore", detached: true,
423
- }).unref();
414
+ if (!fs.existsSync(setupScript)) {
415
+ log("找不到 setup-9router.cjs,直接尝试启动 9router", "WARN");
416
+ trySpawn9router();
417
+ poll9router();
418
+ return;
424
419
  }
425
420
 
426
- // 等脚本跑一会儿后直接 spawn 9router(后台静默,不弹窗)
427
- setTimeout(() => {
428
- log("正在启动 9router...");
429
- const child = spawn("9router", [], {
430
- detached: true,
431
- windowsHide: true,
432
- stdio: "ignore",
433
- });
434
- child.unref();
435
- }, 2000);
421
+ // 第一步:跑你的脚本(安装+注入数据库)
422
+ log("正在执行 9router 安装与数据库配置...");
423
+ const child = spawn(process.execPath, [setupScript], {
424
+ cwd: __dirname, stdio: "ignore", detached: true,
425
+ });
426
+ child.unref();
427
+
428
+ // 第二步:脚本退出后直接 spawn 9router(静默不弹窗)
429
+ child.on("exit", () => {
430
+ log("部署脚本完成,正在启动 9router...");
431
+ trySpawn9router();
432
+ });
436
433
 
437
- // 一直轮询到 9router 起来为止(不限次数)
434
+ // 第三步:后台轮询端口
438
435
  poll9router();
439
436
  }
440
437
 
438
+ function trySpawn9router() {
439
+ try {
440
+ const r = spawn("9router", [], {
441
+ detached: true, windowsHide: true, stdio: "ignore",
442
+ });
443
+ r.unref();
444
+ } catch (e) {
445
+ log(`启动 9router 失败: ${e.message}`, "ERR");
446
+ }
447
+ }
448
+
441
449
  async function poll9router() {
442
450
  for (let i = 0; ; i++) {
443
451
  if (await isPortOpen(SERVER_PORT)) {
@@ -446,7 +454,7 @@ async function poll9router() {
446
454
  return;
447
455
  }
448
456
  if (i < 60) await new Promise((r) => setTimeout(r, 1000));
449
- else await new Promise((r) => setTimeout(r, 5000)); // 60秒后放慢频率
457
+ else await new Promise((r) => setTimeout(r, 5000));
450
458
  }
451
459
  }
452
460