You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Astro报错TypeError: Cannot read properties of undefined (reading 'document')求助

解决Astro中引入jQuery报错的问题

问题原因

你在Astro布局文件的前置脚本(---代码块)中直接import jQuery,而这个脚本是在Node.js服务端环境运行的,jQuery依赖浏览器的document对象,服务端没有这个对象,所以会抛出Cannot read properties of undefined (reading 'document')错误。

解决方案

方式1:直接在HTML中用<script>标签引入

把jQuery和自定义脚本放在HTML的<body>末尾(确保页面DOM加载完成后执行),代码示例:

---
---

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <!-- 页面头部内容 -->
</head>
<body>
  <!-- 页面主体内容 -->
  
  <!-- 引入脚本 -->
  <script src="../scripts/jquery.js"></script>
  <script src="../scripts/main.js"></script>
</body>
</html>

方式2:使用Astro的is:client指令

如果想利用Astro的资源打包能力,可以给脚本标签加上is:client属性,让脚本只在浏览器端加载执行,避免服务端运行报错:

---
---

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <!-- 页面头部内容 -->
</head>
<body>
  <!-- 页面主体内容 -->
  
  <script is:client src="../scripts/jquery.js"></script>
  <script is:client src="../scripts/main.js"></script>
</body>
</html>

注意事项

  • 确保jQuery脚本在自定义main.js之前引入,保证main.js执行时jQuery已经加载完成。
  • 不要在Astro的前置脚本块中import浏览器端依赖(比如jQuery、DOM操作类库),这类脚本只能在浏览器环境运行。

内容的提问来源于stack exchange,提问作者MGA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:31:08