VPS Monitor 改造记:Token 用量 + 访问分析 + GA 风格 UI
第 4 页:踩过的坑
坑 1:Turbopack 的 fs 静态分析
问题:fs.existsSync(变量) 会让 Turbopack 把整个项目打包,构建失败。
解决:加注释 /*turbopackIgnore: true*/
fs.existsSync(/*turbopackIgnore: true*/ filePath)
坑 2:geoip-lite 的 /ROOT 大写路径 Bug
问题:Turbopack 把 geoip-lite 内联进 chunk,数据文件路径被硬编码成大写 /ROOT/...,运行时报 ENOENT。
解决:用 eval("require") 绕开静态分析:
const req = eval("require");
const geoip = req("geoip-lite");
坑 3:PM2 进程打架
问题:手动 kill 掉 3003 后,PM2 立刻自动重启,while kill 循环导致 PID 疯狂递增。
解决:统一用 PM2 管理:
/root/.nvm/versions/node/v24.21.0/bin/pm2 restart vps-monitor
坑 4:bash 转义崩溃
问题:在 bash -c '...' 里写含单引号、反引号、SQL 的长文本,shell 解析崩溃。
解决:改用 Python heredoc 写文件:
python3 << 'PYEOF'
content = r'''...'''
open(path, "w").write(content)
PYEOF
坑 5:pnpm vs npm
问题:项目用 pnpm 管理,用 npm 装依赖会破坏 node_modules 结构。
解决:始终用 pnpm add。
