Commit 660949e
committed
fix(runtime): Node 18 支持结束(engines >=20)、exe 加载期崩溃、打包器换到 @yao-pkg/pkg
起因是 4.19.0 新增的 smoke-node18 作业首跑就红。
1. engines >=18.17 → >=20。fastify 5 用了 Node 20 才有的
diagnostics_channel.tracingChannel,所以自 dependabot 把 fastify 从 4.29.1 升到
5.12.3 起,Node 18 就已经起不来了——主矩阵跑在 20/22 上,engines 只是声明、npm
默认不拦,声明的下限从来没有人执行过。该作业本身是对的,不要为了让它变绿而放宽它。
2. 打包后的 exe 此前在加载期就崩(src/utils/version.ts)。CJS 打包下 import.meta.url
是空字符串,new URL('../../package.json', '') 抛 ERR_INVALID_URL,而抛出点在
"为坏候选兜底"的 try 之外(它在数组字面量求值时发生),于是模块加载失败、进程在起
监听之前就死了。改为单独包住这一句、降级到兜底路径。
3. 打包器 pkg → @yao-pkg/pkg(6.x),目标 node18-win-x64 → node22-win-x64。原来那条链
是被 vercel/pkg 的天花板钉住的:它已停止维护、最高只支持 node18,engines 与 target
都是它的产物,不是独立的产品决策。换到维护中的 fork 后 exe 内嵌 node22。
顺带:smoke-node18 → smoke-node20,改为验证 engines 下限本身(能起在 20 上就蕴含能起
在 22 上);README 的 node badge 与 build:win 说明同步;package-lock 跟着更新。
安全:曾评估"回退 fastify 到 4.x 以保住 Node 18"——技术上可行(389 项全绿、零代码
改动),但 4.29.1 是 4.x 终点、不会再有安全补丁,npm audit 会常驻 fastify 与
find-my-way 两个 high,故不采用。本版 audit 清零(原 2 高危 + 1 中危)。
验证:389 项全绿,tsc --noEmit / eslint 0 错误;真实 Node 20.20.2 上跑 /health 与
仪表盘 HTML 两个断言均通过。exe 的静态资源仍未生效,属既存缺陷,见 CHANGELOG
的「已知问题」,未在本次修复。1 parent e59d7da commit 660949e
6 files changed
Lines changed: 687 additions & 581 deletions
File tree
- .github/workflows
- src/utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
55 | | - | |
| 54 | + | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
68 | 70 | | |
69 | 71 | | |
70 | 72 | | |
| |||
76 | 78 | | |
77 | 79 | | |
78 | 80 | | |
79 | | - | |
| 81 | + | |
80 | 82 | | |
81 | | - | |
| 83 | + | |
| 84 | + | |
82 | 85 | | |
83 | 86 | | |
84 | 87 | | |
| |||
116 | 119 | | |
117 | 120 | | |
118 | 121 | | |
119 | | - | |
| 122 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
5 | 33 | | |
6 | 34 | | |
7 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | | - | |
| 116 | + | |
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| |||
0 commit comments