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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:50:24