网站代码常见错误通常集中在语法、运行时、资源路径、服务器处理和前后端接口契约几个层面。处理这类问题时,不应只根据页面上的“报错”猜原因,而要从复现条件、浏览器控制台、网络请求和服务端日志中取得证据,再确定修改位置。下面按照“复现问题—定位层级—核对输入输出—验证修复”的路径,整理常见错误及可执行的排查方法。
先确认错误发生在哪一层
同一个页面白屏,可能是 JavaScript 语法错误,也可能是接口返回了错误内容;页面样式错乱,可能是 CSS 选择器失效,也可能是静态文件路径返回了 404。因此,第一步不是立即改代码,而是判断错误属于哪一层。
| 表现 | 常见层级 | 优先检查位置 |
|---|---|---|
| 页面完全空白或按钮没有反应 | JavaScript 语法或运行时 | 浏览器 Console、报错文件和行号 |
| 图片、脚本或样式加载失败 | 路径、部署目录或静态资源配置 | Network 中的请求地址和状态码 |
| 页面显示“数据加载失败” | 接口地址、请求参数或服务端异常 | 请求方法、状态码、响应正文 |
| 本地正常、部署后异常 | 环境变量、域名、代理或构建配置 | 生产环境配置与服务器日志 |
第一步:稳定复现并记录完整现象
先记录触发错误的页面、操作顺序、使用的账号状态、请求参数和发生时间。能够稳定复现的问题,定位效率通常高于偶发问题。不要只记录“接口报错”或“页面打不开”,应保留具体的 URL、HTTP 方法、状态码、响应内容以及控制台中的原始错误。
在浏览器开发者工具中,先打开 Console 查看 JavaScript 错误,再打开 Network 重复执行操作。Network 面板至少要核对请求地址、请求方法、查询参数或请求体、请求头、响应状态和响应正文。若请求根本没有发出,问题多半在前端事件绑定、参数组装或代码执行流程;若请求已经发出,则继续检查接口契约和服务端处理。
前端代码中的常见错误及处理方式
语法错误导致代码无法执行
括号或引号未闭合、对象属性之间缺少逗号、关键字拼写错误、模块导入路径错误,都可能在脚本加载阶段直接中断执行。浏览器通常会给出文件名和行号,例如“Unexpected token”或“Unexpected end of input”。应从报错行向前检查同一语句、括号和模板字符串,而不是只修改报错位置之后的代码。
如果报错发生在打包后的压缩文件中,应结合构建工具生成的源码映射定位到原始文件。修改后重新构建,并确认浏览器实际加载的是新生成的文件,避免缓存或旧版本资源让错误看起来没有变化。
空值和异步数据未准备好
“Cannot read properties of undefined”或“Cannot read properties of null”通常表示代码访问了尚未存在的对象属性。例如页面刚加载时,接口数据还没有返回,代码却立即读取用户信息或列表字段。修复时要明确数据的初始结构,在数据不存在时显示加载状态或空状态,并对确实可选的字段进行条件判断。
异步函数还需要处理成功、失败和超时三种结果。不能只写成功回调而假定接口一定返回完整数据,也不能把接口响应直接当作业务对象使用。先确认响应结构,再读取对应字段;如果响应结构发生变化,应同步修改前端类型定义、校验逻辑和展示代码。
JSON 解析失败或返回格式不符
前端出现“Unexpected token < in JSON”时,常见原因不是 JSON 本身多了一个字符,而是前端期待 JSON,服务器实际返回了 HTML 页面。返回内容可能是 404 页面、登录页面或通用错误页面。此时应在 Network 中查看响应正文,并核对接口路径、代理配置、登录状态和服务器错误日志。
如果接口声明返回 JSON,响应头中的 Content-Type 应与实际内容一致,成功响应和错误响应也应保持可识别的结构。例如业务失败可以返回明确的错误码、错误信息和必要的字段,而不是让前端通过字符串匹配一整段提示文字。具体字段名称应以项目已经约定的接口文档或服务端实现为准。
HTTP 状态码与接口问题的定位方法
状态码只能帮助缩小范围,不能替代服务端日志和响应正文。常见状态码可以按下面的方式检查:
- 400 Bad Request:请求格式或参数不符合接口要求。检查 JSON 格式、必填字段、字段类型和参数编码。
- 401 Unauthorized:身份认证未通过或认证信息缺失。检查登录状态、令牌是否过期,以及客户端是否按约定发送认证信息。
- 403 Forbidden:服务器理解请求,但当前身份没有执行该操作的权限。应核对角色、资源归属和服务端权限判断。
- 404 Not Found:请求路径不存在,也可能是前端使用了错误的基础地址、版本前缀或部署路由。
- 405 Method Not Allowed:路径存在,但请求方法不被接口接受。核对 GET、POST、PUT、PATCH、DELETE 等方法是否一致。
- 415 Unsupported Media Type:请求体的媒体类型不符合要求,例如服务端要求 JSON,但客户端发送了表单格式。
- 500 Internal Server Error:服务端执行过程中出现未处理异常。应查看服务端堆栈、输入参数和数据库操作,而不是仅在前端重复发送请求。
- 502 或 504:网关与上游服务之间通信失败或等待超时。需要检查代理、服务进程、网络连接和上游响应时间。
接口契约必须同时核对四项内容
前后端联调失败,很多时候不是某一行代码写错,而是双方对接口的理解不一致。每个接口至少应明确以下内容。
- 请求定义:包括路径、HTTP 方法、查询参数、路径参数、请求体格式和必填字段。
- 认证与权限:说明哪些请求需要登录、认证信息放在哪里,以及不同身份可以执行什么操作。
- 响应定义:明确成功状态码、数据字段、字段类型、分页结构和空数据表现。
- 错误定义:明确参数错误、认证失败、无权限、资源不存在和服务异常的处理方式。
例如前端发送字段名为 userId,服务端却读取 user_id,请求可能能够到达服务器,但业务结果仍然为空。又如前端按数组渲染数据,服务端实际返回的是包含 items 字段的对象,也会产生运行时错误。排查这类问题时,应直接对比实际请求和实际响应,不要只比较接口名称。
资源路径、路由和部署配置错误
静态资源 404 是网站代码中非常常见的一类问题。应检查路径大小写、相对路径的基准目录、构建后的文件名、公共资源目录和服务器是否正确暴露了静态目录。开发环境使用根路径时正常,不代表部署到子目录后仍然正确;这时要同时检查构建配置中的资源前缀和服务器路由规则。
单页应用刷新内页出现 404,也可能不是前端路由本身不存在,而是服务器没有将未知页面路径转发到应用入口。解决方式取决于服务器和部署方式,应确认生产环境的路由回退配置,同时避免把接口路径错误地回退成 HTML 页面。
如果浏览器提示跨域错误,应先确认请求是否到达服务端。跨域限制通常涉及请求来源、允许的方法、允许的请求头以及预检请求处理。不能只在前端添加请求头来解决;需要按照实际部署架构检查服务端或网关的跨域响应配置,并确认认证信息是否允许跨来源发送。
数据库和服务端代码的常见问题
服务端收到请求后仍可能在参数校验、业务判断、数据库查询或第三方服务调用阶段失败。参数校验应尽量靠近接口入口,先验证类型、范围、必填项和资源权限,再执行数据库写入。这样可以把可预期的输入问题转换为明确的客户端错误,而不是统一返回 500。
数据库相关错误常见于字段名不一致、迁移未执行、字段为空值不符合约束、重复数据违反唯一限制,以及连接配置错误。排查时应记录实际执行的业务分支和数据库错误信息,并确认当前运行环境使用的是哪一个数据库和版本。不要把详细堆栈、连接信息或密钥直接返回给浏览器;公开响应只保留客户端需要理解的错误信息,完整细节放在受控日志中。
修复后如何确认问题真正解决
完成修改后,先用原来的复现步骤验证,再补充边界情况:参数为空、字段类型错误、未登录、无权限、资源不存在和服务超时。接口测试应同时检查状态码、响应头、响应字段和错误分支,而不只是确认页面出现了某段文字。
最后清理或标记临时日志,重新构建并确认部署版本,检查浏览器是否仍使用旧缓存。对于已经修复的错误,保留一条可重复的测试用例或接口测试,防止后续修改再次引入同样的问题。这样处理网站代码常见错误,才能从“看到报错后临时修改”转变为根据证据定位并验证结果。





