Github Actions构建NextJS应用提示No Build Cache Found问题求助
解决Next.js Github Actions中Build缓存警告与next/font和SWC冲突问题
一、解决next/font与自定义.babelrc的编译冲突
问题根因
自定义.babelrc会强制Next.js禁用默认的SWC编译器,回退到Babel,但next/font依赖SWC的专属编译能力,直接导致兼容性报错。
可选解决方案
根据你的项目需求选一种:
- 移除自定义.babelrc(优先推荐)
直接删掉项目根目录的.babelrc,Next.js会自动启用SWC,next/font就能正常工作,还能获得更好的编译速度。 - 保留Babel配置,改用传统字体导入
如果必须保留Babel配置,放弃next/font,改用传统方式:把字体文件放到public/fonts目录,在CSS里用@font-face声明,再在组件里引用对应的CSS类。 - 迁移Babel配置到next.config.js
将.babelrc的配置移到next.config.js的babel字段中,同时确保兼容SWC(仅适用于Next.js 13+):
注意:复杂的Babel配置仍可能影响SWC,优先选前两种方案。// next.config.js module.exports = { babel: { presets: ['next/babel'], plugins: [] // 你的自定义Babel插件 } }
二、解决"No build cache found"警告
问题根因
当前配置存在重复缓存(actions/setup-node的cache: 'npm'和actions/cache的~/.npm重复),且缓存键的匹配逻辑不够精准,导致缓存无法命中。
修正后的Github Actions配置
name: Build & Test on: push: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Cache Next.js dependencies and build cache uses: actions/cache@v3 id: nextjs-cache with: path: | ~/.npm ${{ github.workspace }}/.next/cache key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} restore-keys: | ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - run: npm ci - run: npm run build --if-present - run: npm test
核心调整点
- 删掉
actions/setup-node里的cache: 'npm',避免重复缓存冲突 - 细化缓存键的代码文件匹配规则,确保代码变更时缓存失效,未变更时能命中
- 添加
id: nextjs-cache可在日志里查看缓存命中状态(可选)
验证步骤
- 先解决编译冲突(比如移除
.babelrc),确保本地npm run build能正常执行 - 推送修正后的配置到仓库,触发工作流
- 查看工作流日志,确认缓存警告消失且build成功
内容的提问来源于stack exchange,提问作者bigfred996
相关产品推荐
相关产品推荐

