frontend Roadmap

前端 / Node.js 构建排障专题

前端 / Node.js 构建排障专题:聚合 EADDRINUSE 端口占用、pnpm install 失败、Vite/Nuxt 水合不匹配、CORS 跨域、CI 构建内存不足、JSON 解析错误和 Node 内存溢出等前端工程化问题的完整排障路径。

前端排障先区分浏览器运行时、构建期、SSR/水合、依赖安装和网络 API 五个层面,本地能跑不代表 CI 能跑,固定 Node/pnpm 版本和 frozen lockfile 是消除"本地好线上坏"的第一步。

frontendnodenpmvitenuxtcorsbuild
排障 / 命令11
精选入口4
工具 / 速查11
最近更新2026-07-12

Troubleshooting Path

推荐排障路线图

提交问题 →
  1. 01

    先区分问题发生在哪个阶段

    是依赖安装失败、构建报错、SSR 水合不匹配还是运行时接口报错,不同阶段的排查工具和修复方向完全不同。

  2. 02

    再对比本地和 CI 环境差异

    Node 版本、包管理器、lockfile、CI 内存和 Docker socket 都可能导致本地通过但 CI 失败,用 frozen lockfile 确保依赖可复现。

  3. 03

    继续检查 SSR 和浏览器兼容性

    hydration mismatch 通常由时间、随机数、localStorage 或 window 条件渲染引起,浏览器专属逻辑应放 mounted 或 ClientOnly。

  4. 04

    最后处理跨域和安全策略

    CORS、Cookie SameSite、HTTPS 混合内容和缓存策略会让接口在 Postman 可用但浏览器失败,从 Network 面板读真实响应。

Before You Change

执行前检查

  • 固定 Node/pnpm 版本,CI 使用 frozen lockfile 确保依赖可复现
  • 不要为了修 CORS 把所有来源和 Credential 同时放开,这会产生安全漏洞
  • 不要随手删除 lockfile 解决 install 问题,会导致依赖版本不可控
  • 新增 SSR 页面时检查 hydration warning,避免首屏闪烁

Start Here

优先阅读

Tools

相关工具

工具

JSON 格式化与校验工具

在线格式化、压缩和校验 JSON 数据,支持 2 空格、4 空格和 Tab 缩进切换,精准定位解析错误的行号与位置,浏览器本地处理不上传数据,适合接口调试、日志分析与配置文件排查。

工具

Base64 编码解码工具

支持 UTF-8 编码的 Base64 在线编码与解码工具,能正确处理中文、Emoji 与特殊字符,浏览器本地完成不上传数据,适合接口调试、JWT 拆解、图片 Data URL 和邮件附件转换等场景。

工具

URL 编码解码工具

对 URL、查询参数和 form 表单值进行在线编码解码,区分 encodeURIComponent 与 encodeURI 的语义差异,正确处理中文、空格和保留字符,浏览器本地运行不上传数据,适合接口调试和路由排查。

工具

时间戳转换工具

在 Unix 时间戳和可读日期之间双向转换,自动识别秒级和毫秒级精度,同时显示本地时区与 UTC 时间以及 ISO 8601 格式,适合排查日志时间线、Cookie 过期时间和接口时间戳差异问题。

工具

UUID 生成器

批量在线生成 UUID v4 随机版本与 v7 时间戳排序版本,支持大小写切换、带/去横线格式,基于浏览器内置 crypto.getRandomValues 安全随机源,适合数据库主键、请求追踪 ID 与唯一标识生成。

工具

Hash 哈希计算器

使用浏览器内置 Web Crypto API 计算文本的 SHA-1、SHA-256、SHA-384、SHA-512 哈希值,本地完成不上传数据,适合校验文件完整性、生成 API 签名、密码摘要和数据指纹等安全场景。

工具

正则表达式测试器

在线测试正则表达式,支持全局/忽略大小写/多行/单行/Unicode 标志切换,实时高亮匹配结果并显示捕获组,内置常用正则模式(邮箱、IP、URL、日期等),浏览器本地执行不上传数据,适合接口调试、日志分析和文本提取场景。

工具

JWT 解码器

在线解码 JWT(JSON Web Token),分别解析 Header 和 Payload 并格式化为可读 JSON,显示签名部分和过期时间,支持检测 alg 无签名风险和 exp 过期状态,浏览器本地解码不上传 Token,适合接口调试和认证排障场景。

Latest Updates

最近更新

All Runbooks

全部相关内容

排障

CI 构建内存不足与进程被杀排查

CI 构建时出现 JavaScript heap out of memory、Killed 或 exit code 137,先区分 Node 堆内存不足与系统 OOM,再调整 NODE_OPTIONS=--max-old-space-size、Runner 内存和并发 job,覆盖 GitHub Actions、GitLab CI 和自建 Runner 场景。

cibuildmemory
排障

CORS 预检 OPTIONS 请求失败排查

浏览器请求被 CORS 拦截、OPTIONS 预检返回 404/405 或缺少 Access-Control-Allow-Origin 头时,用 curl -X OPTIONS 复现预检,核对服务端允许的 Origin、Method、Headers 与 credentials 组合,注意带 Cookie 时不能用 * 通配。

corsoptionsbrowser
排障

JSON 解析失败常见原因与修复

JSON.parse 报 Unexpected token、SyntaxError 时,按行列号定位问题字符,检查是否有 trailing comma、单引号、// 注释、BOM 头或非 UTF-8 编码,用 jq、python -m json.tool 或 node 复现校验,标准 JSON 不支持注释与尾随逗号。

jsonparsesyntax
排障

Node.js EADDRINUSE 端口被占用排查

Node.js 启动服务报 Error: listen EADDRINUSE: address already in use :::3000 时,用 lsof -iTCP:3000 -sTCP:LISTEN 或 ss -lntp 找到占用进程 PID,判断是自己的僵尸进程还是其他服务,再决定 kill 释放端口还是通过 PORT 环境变量换端口。

nodeeaddrinuseport
排障

pnpm install 失败排查:锁文件、代理和原生依赖

pnpm install 失败或 ERR_PNPM_OUTDATED_LOCKFILE 时,先区分失败发生在下载 registry、解析 pnpm-lock.yaml 还是 postinstall 原生编译阶段,检查 Node 版本、registry、HTTP_PROXY 组合,CI 用 --frozen-lockfile 复现,不要一上来就删 lockfile。

pnpmnodeinstall
排障

Spring Boot 端口被占用怎么解决

Spring Boot 启动报 Web server failed to start: Port 8080 was already in use 时,Linux 用 lsof -iTCP:8080 -sTCP:LISTEN、Windows 用 netstat -ano | findstr :8080 找占用进程,判断是自身僵尸 Java 进程还是他人服务,再决定 kill 释放或通过 --server.port 换端口。

spring-bootjavaport
排障

Nuxt/Vue hydration mismatch 排查方法

Nuxt/Vue 生产构建出现 Hydration completed but contains mismatches 或首屏闪烁时,先用 build+preview 复现,检查是否 SSR 阶段使用了 Math.random、Date.now、localStorage、window 或按 viewport 输出不同 DOM,把浏览器专属逻辑放到 ClientOnly 或 mounted 之后。

nuxtvuessr
命令

Base64 编码原理与使用场景

用 base64、base64 -d 和 Buffer.from().toString('base64') 编解码字符串,理解 Base64 用 64 个可打印字符表示二进制、编码后体积膨胀约 4/3,以及 URL Safe 变体把 + / 替换为 - _ 的用法,Base64 是编码不是加密。

base64编码前端
命令

Java 查看线程堆栈命令

Java 生产环境抓线程堆栈的常用命令,jps -l 找 Java 进程 PID,jstack <pid> 打印线程栈、-l 附带锁信息,jcmd Thread.print 是 jstack 的替代,jstack 无响应时用 kill -3 触发 JVM dump 到 stdout,arthas thread 可在线不中断进程排查死锁。

javajstackthread
命令

Node/Nuxt 构建内存排查命令

Node/Nuxt/Next 构建报 JavaScript heap out of memory 或 exit code 137 时排查内存的常用命令,用 NODE_OPTIONS=--max-old-space-size=4096 扩大 V8 堆,du 查看 .nuxt/.output/.next 构建产物体积,free -h 与 dmesg 判断系统 OOM。

nodenuxtbuild
命令

URL 编码中空格的 + 与 %20 区别

解释 URL 编码中空格何时是 + 何时是 %20,application/x-www-form-urlencoded 表单里空格编码为 +,RFC 3986 URI 规范里空格编码为 %20,JS 的 encodeURIComponent/encodeURI 都用 %20,URLSearchParams 构建 query 时会自动用 +。

url编码空格