前言
在 Vercel 部署的 Waline 评论系统中,如果发现评论列表无法显示访客的 IP 归属地,且服务端日志中出现类似 Error: [Ipv4ToRegion] db file not exists : /var/task/node_modules/ip2region/data/ip2region.db 的报错,说明底层的 IP 解析库未能正常加载数据库文件。
产生原因
该问题的核心在于 Vercel 的底层构建工具 @vercel/nft(Node File Trace)的静态分析机制。由于上游依赖包在读取 ip2region.db 二进制文件时使用了动态拼接的路径,导致打包器在编译阶段无法准确追踪该资源,最终在生成无服务器运行环境时将其直接剔除,该问题的讨论见 waline#3583
临时解决方法
找到项目根目录下的 vercel.json 配置文件。
在处理后端逻辑的
@vercel/node构建块中,新增config.includeFiles字段,强行将目标数据库目录挂载至打包清单中。
修改后的完整配置文件如下:
json
{
"name": "comment",
"github": {
"silent": true
},
"builds": [
{
"src": "robots.txt",
"use": "@vercel/static"
},
{
"src": "favicon.ico",
"use": "@vercel/static"
},
{
"src": "index.cjs",
"use": "@vercel/node",
"config": {
"includeFiles": "node_modules/ip2region/data/**"
}
}
],
"rewrites": [
{
"source": "/((?!robots\\.txt$|favicon\\.ico$).*)",
"destination": "index.cjs"
}
]
}- 本文链接:https://blog.kafuchino.top/posts/2026-06-12
- 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 许可协议。
