diff --git a/patches/README.md b/patches/README.md new file mode 100644 index 00000000..95b2c4da --- /dev/null +++ b/patches/README.md @@ -0,0 +1,65 @@ +# 依赖补丁 + +修复一些依赖包中存在的问题 + +## floating-vue + +**问题:** 水合过程中激活不匹配 +**进度:** 暂不知晓该包何时修复该问题。 +**影响:** 在控制台中输出 `hydration hydration mismatch` 错误警告,但不影响站点正常访问和交互。 + +相关 issue: + +- +- + +当在项目中启用了 `twoslash` 功能,并额外安装了 `@vuepress/shiki-twoslash` 包,在项目进行 `vuepress build` 构建部署包并部署后。 +访问部署后的站点,在有使用 `twoslash` 功能的相关页面,会出现下面的错误信息: + +``` +hydration hydration mismatch +``` + +这表示在 水合过程中激活不匹配,即打包后的 SSR 代码与浏览器端代码不匹配。 + +该问题是由于 `floating-vue` 中的 `popper-id` 的值不匹配导致的。 + +为了解决这个问题,需要在 `floating-vue` 中修改 `popper-id` 的值。 + +通过以下步骤进行修复: + +> [!CAUTION] +> 此修复方案仅适用于 PNPM + +1. 运行下面的命令 + + ```bash + pnpm patch floating-vue@5.2.2 + ``` + + 该命令会下载 `floating-vue` 的补丁包到 `node_modules/.pnpm_patches/floating-vue@5.2.2` + + 并在控制台中输出类似的信息: + + ```bash + pnpm patch-commit + ``` + + 留意这部分信息,在步骤 5 中,需要复制此行命令 + + `` 表示补丁包的路径,在这里是 `node_modules/.pnpm_patches/floating-vue@5.2.2` + +2. 进入 `node_modules/.pnpm_patches/floating-vue@5.2.2` 文件夹。 + +3. 打开 `dist/floating-vue.mjs` 文件,并跳转到第 `948` 行 (`id: e.popperId,`) + +4. 在该行下方插入新的一行,内容为: + + ```diff + id: e.popperId, + + 'data-allow-mismatch': '', + ``` + +5. 复制 步骤 1 中的控制台输出的 `pnpm patch-commit ` 命令,并粘贴到控制台中执行。 + +6. 重新构建部署站点