故障排除
字体加载问题
Google Fonts 在大陆环境下无法访问
@nuxt/fonts 模块默认从 fonts.google.com 拉取字体元数据。在无法访问 Google 的网络环境下,开发服务器启动时会出现以下警告:
Could not fetch from https://fonts.google.com/metadata/fonts. Will retry in 1000ms. 3 retries left.
修复方式:将字体 provider 改为 bunny(隐私友好的 Google Fonts 兼容替代品):
export default defineNuxtConfig({
fonts: {
families: [
{ name: 'Public Sans', global: true, provider: 'bunny' }
]
}
})
pnpm 和 .npmrc 配置问题
shamefully-hoist 已移除
从 v1.10.0 版本开始,项目已移除 .npmrc 中的 shamefully-hoist=true 配置。
shamefully-hoist 会将所有依赖提升到 node_modules 根目录,破坏 pnpm 的严格依赖隔离机制,可能导致意外访问未声明的依赖、版本冲突和构建不稳定。删除 .npmrc
删除项目中的 .npmrc 文件(如果存在)。
重新安装依赖
pnpm install
补齐缺失的依赖
如遇到依赖找不到的错误,将缺失的包添加到 package.json 的 dependencies 中。
Tailwind CSS 作为 Peer Dependency
Tailwind CSS 已从直接依赖改为 peerDependencies,主题使用者需要手动安装:
pnpm add -D tailwindcss
样式定制问题
自定义 CSS 配置
从 v1.10.0 开始,。如果你需要自定义样式:app/assets/css/main.css 不再是必需的
需要先安装 @nuxt/ui:
pnpm add @nuxt/ui
然后在 nuxt.config.ts 中配置:
export default defineNuxtConfig({
modules: ['@nuxt/ui'],
ui: {
// 自定义主题配置
}
})
在 app/assets/css/main.css 中添加全局样式,并在 nuxt.config.ts 中引入:
export default defineNuxtConfig({
css: ['~/assets/css/main.css']
})
依赖安装问题
Peer Dependencies 警告
WARN Issues with peer dependencies found
├─┬ @movk/nuxt-docs
│ └── ✕ missing peer tailwindcss@4.x
pnpm add -D tailwindcss@^4.1.0
构建脚本审批
从 pnpm v10 开始,默认情况下不会运行依赖的 lifecycle scripts(如 postinstall)。本项目需要审批以下包含原生模块的依赖:
| 依赖包 | 用途 | 是否必需 |
|---|---|---|
better-sqlite3 | SQLite 数据库(用于 MCP 服务器) | 是 |
sharp | 图片处理(用于 @nuxt/image) | 是 |
pnpm approve-builds
从列表中选择上述包进行审批。
在项目根目录的 pnpm-workspace.yaml 中添加:
onlyBuiltDependencies:
- better-sqlite3
- sharp
在 package.json 中添加:
{
"pnpm": {
"onlyBuiltDependencies": [
"better-sqlite3",
"sharp"
]
}
}
Nitro 预渲染问题
unist-util-visit 包找不到
Cannot find package 'unist-util-visit' imported from .../prerender/chunks/nitro/nitro.mjs
Did you mean to import "unist-util-visit/index.js"?
@nuxt/content 的 LLMs 集成在 Nitro 预渲染 /llms-full.txt 时,通过 import("unist-util-visit") 动态导入该包。pnpm 的严格依赖隔离使得 Nitro 输出目录(docs/node_modules/.cache/)无法解析到仅存在于 layer 依赖链中的包。在消费方项目的 package.json 中显式声明缺失的运行时依赖:
{
"dependencies": {
"unist-util-visit": "^5.1.0",
"@nuxtjs/mdc": "^0.20.1"
}
}
使用 .npmrc 将特定包提升到根目录:
public-hoist-pattern[]=unist-util-visit
public-hoist-pattern[]=@nuxtjs/mdc
添加后运行 pnpm install 使配置生效。
Vercel 部署问题
Output Directory 找不到
Error: No Output Directory named "dist" found after the Build completed.
此错误通常不是输出目录配置问题。Nuxt 使用 vercel preset 构建时,Nitro 会自动生成 .vercel/output/ 目录(Vercel Build Output API 格式),Vercel 能自动识别该目录,无需手动配置 outputDirectory。
.vercel/output/ 未完整生成,Vercel 回退查找默认的 dist 目录。可以在 Vercel 构建日志末尾确认是否为 OOM:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
或:
At least one "Out of Memory" ("OOM") event was detected during the build.
vercel.json 中通过 buildCommand 增大 Node.js 堆内存限制:{
"buildCommand": "NODE_OPTIONS='--max-old-space-size=7168' pnpm run build",
"framework": null,
"installCommand": "pnpm install --frozen-lockfile"
}
--max-old-space-size=7168(7 GB)可为 Nitro 构建和预渲染提供充足的内存空间。如果增大内存后仍然 OOM,可以考虑:
- 升级到 Vercel Pro 计划以获得更大的构建容器
- 减少预渲染路由数量