SEO 百科

脚本错误

本页目录

脚本错误

脚本错误指页面上的一段 JavaScript 代码在执行时出错[1],出错的那段脚本会停止运行。做 SEO 的人要留意它,因为由脚本生成的内容会跟着一起消失。爬虫执行脚本时遇到同样的错误,看到的就是半张页面。

报错与脚本中止

JavaScript 按顺序逐句执行。某一句抛出异常又没有人接住,这一段脚本就不再往下走[1]。异常指脚本运行中出现的意外情况,例如读取不存在的变量、调用不存在的方法,或者请求失败没有处理。

接住异常要用 try...catch。try 包住可能出错的代码,catch 接收抛出的错误对象[1]。没有这层保护,一次报错就会带走后面的逻辑。

try {
  renderProducts(products);
} catch (error) {
  console.error(error);
}

这段代码里,renderProducts 出错时,catch 会接住它。没有 catch,错误会一直抛到顶层。

内容的消失

脚本出错的位置决定了损失多少。如果它排在渲染正文之前,正文就写不进页面。后面还有联动逻辑,例如分页、筛选和图片替换,也会一起停在原地。

对访客来说,结果是页面某一块空白。对爬虫来说,结果是渲染后的 HTML 里没有这块内容。源码里本来也没有,索引里自然也没有。

正文是脚本的产物,脚本本身不会被当成正文收录。产物没出现,索引里就少一块。

与抓取和收录的关系

抓取是收录的第一步。百度把搜索的工作原理概括为从互联网抓取网页、建立索引数据库、再将索引库中的数据展现给用户[4]。脚本错误不会挡住抓取,它挡的是渲染之后的正文。

搜索引擎执行脚本的环境与访客的浏览器不完全一样。在访客那里能跑的代码,爬虫那里未必跑得通。同一段内容,访客看得到,索引里却没有。

排查的办法

用 Search Console 的网址检查工具,能看渲染后的 HTML 和脚本报错。Google 建议用它查看已加载的资源、JavaScript 控制台输出和异常,以及渲染后的 DOM[3]。

生产环境的报错要主动收集。Google 建议收集两类错误,一类来自访客,一类来自 Googlebot,用它们发现影响渲染的问题[3]。做法是监听全局的 error 事件。MDN 说明,当资源加载失败或无法使用时,会在 Window 对象上触发 error 事件[2]。

window.addEventListener("error", (e) => {
  report(`${e.message} @ ${e.filename}:${e.lineno}`);
});

这段代码把报错信息上报到自己的服务端。有一点要记住:Google 提醒,某些类型的 JavaScript 错误无法用这种方式记录,例如解析错误[3]。解析错误指脚本内容不符合语法,整份文件都读不进去,监听函数也就没有机会执行。

常见误用

  • 只在访客浏览器里测试,不看爬虫的渲染结果。
  • 报错没有上报,上线后无人察觉。
  • 请求失败没有降级,一次异常带走整段渲染。
  • 关键内容放在会抛错的脚本里,没有备用文案。

附录

参见

参考资料

官方(境外)

  1. 《控制流与错误处理》,MDN Web 文档,2025-12-05 更新。
  2. 《Window: error event》,MDN Web 文档,2026-04-10 更新。
  3. 《解决与 Google 搜索相关的 JavaScript 问题》,Google 搜索中心,2025-12-18 更新。

官方(国内)

  1. 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。

外部链接

无。