抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

我在上篇碎碎念里提到了 umami v3 新增的链接追踪(Link Tracking)、像素追踪(Pixel Tracking)有 Bug,也尝试修复了一下。

今天发现,该 Bug 其实并没有完全修复,有时还是压根就没有记录到像素追踪的数据。

为什么昨天就以为修复了呢?因为我发现关了 IGNORE_IP 后,在浏览器打开了几次跟踪链接,都没有问题。就以为是 IGNORE_IP 的代码出了问题。修复了 IGNORE_IP 后,在浏览器打开跟踪链接,就可以正常记录到数据了。就这么以为找出了问题所在了。

然后今天我在无痕模式下打开跟踪链接,发现都没有记录到追踪的数据。又在 itdog 上测试了一下,看到统计数据还是 0。

然后炸毛了,这啥鬼!

再去翻看那鬼代码,不断地打日志(log),

src\app\api\send\route.ts 里,看到 await parseRequest(request, schema, { skipAuth: true }) 返回了个 {error},再继续在 parseRequest 的实现里打日志(log),发现是里面的 schema.safeParse(isGet ? query : body) 抛出了错误。从打的日志中可看到 "message": "Invalid input: expected string, received null"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2026-02-18 05:59:02.065 [error] 2026-02-18T05:59:02.063Z umami:my {
success: false,
error: Error [ZodError]: [
{
"expected": "string",
"code": "invalid_type",
"path": [
"payload",
"referrer"
],
"message": "Invalid input: expected string, received null"
}
]
at new ZodError (.next/server/chunks/[root-of-the-server]__e72b30ae._.js:1:8143)
at <unknown> (.next/server/chunks/[root-of-the-server]__e72b30ae._.js:1:21935)
at e.safeParse (.next/server/chunks/[root-of-the-server]__e72b30ae._.js:20:8168)
at h (.next/server/chunks/[root-of-the-server]__e72b30ae._.js:1859:308008)
at async E (.next/server/chunks/[root-of-the-server]__4217576a._.js:11:35752)
at async u (.next/server/chunks/[root-of-the-server]__68667959._.js:1:1731)
at async u (.next/server/chunks/[root-of-the-server]__68667959._.js:1:4926)
}

到这里就可以看出,是上游的 payload.referrer 有问题,是 null。没检查 referrer 是否为空,就直接用了它。毕竟浏览器等不一定会发送 referrer,(例如 QQ 邮箱就不会发送 referrer)。

修改了 src\app\(collect)\(p/q)\[slug]\route.ts 的代码,应该 Bug 修复了吧?

评论