NextJS本地npm run build正常,GitHub Actions CI构建失败排查
Next.js CI构建失败:模块找不到问题排查
问题背景
本地执行npm run build可正常完成,但在GitHub Actions的Ubuntu环境中执行该命令时,出现模块找不到错误:
./src/app/components/cards/Leetcode.js Module not found: Can't resolve '../../utils/useLeetcodeData'
已确认文件实际存在:
- 发起导入的文件:
src/app/components/cards/Leetcode.js - 目标模块文件:
src/app/utils/useLeetCodeData.js - 当前导入语句:
import useLeetCodeData from '../../utils/useLeetcodeData'
CI工作流的Debug步骤已验证文件路径正确,但构建仍失败,CI配置文件如下:
name: Deploy to Firebase on: push: branches: [ main ] workflow_dispatch: jobs: build: name: Build and Deploy to Firebase runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v4.1.1 - name: Debug Information run: | ls -R # List all files in the repository ls -R ./src # List files in the src directory ls -R ./src/app/utils # List files in the utils directory - name: Use Node.js 18 uses: actions/setup-node@v4.0.1 with: node-version: 18 - name: Install Dependencies run: npm ci - name: Build run: npm run build - name: Deploy to Firebase uses: w9jds/firebase-action@v13.1.0 with: args: deploy --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
问题原因
核心是文件系统大小写敏感性差异:
- 本地环境(Windows/macOS)默认使用大小写不敏感的文件系统,即使导入路径和文件名大小写不一致,仍能正常匹配文件;
- GitHub Actions使用的Ubuntu系统是大小写敏感的文件系统,导入路径必须和文件名完全匹配。
具体来看:
导入语句中写的是../../utils/useLeetcodeData(末尾为小写leetcode),但实际文件名是useLeetCodeData.js(末尾为大写LeetCode),大小写不匹配导致Ubuntu系统无法定位到文件。
解决方案
修改导入语句,使其路径大小写与实际文件名完全一致:
import useLeetCodeData from '../../utils/useLeetCodeData'
也可以选择统一文件名和导入路径的大小写(推荐前者,保持文件名的命名规范)。
内容的提问来源于stack exchange,提问作者marcusdel2112
相关产品推荐
相关产品推荐

