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

为什么gitlab-ci.yml执行npm run test失败但本地编辑器运行正常?

GitLab CI 运行Node.js测试找不到模块问题解决方案

核心错误原因排查

  • 首查文件名大小写匹配问题:Windows、macOS系统默认文件系统大小写不敏感,你本地导入时路径写../controllers/UserController,哪怕实际文件名是userController.js也能正常加载;但GitLab CI使用的Linux环境文件系统大小写完全敏感,只要路径大小写和实际文件名有出入就会抛出找不到模块错误。请仔细核对导入路径的大小写和controllers目录下的实际文件名是否完全一致。
  • 检查.gitignore规则:确认你没有将controllers目录或UserController文件加入.gitignore,如果被规则屏蔽,代码提交时不会上传到GitLab仓库,CI拉取的代码自然缺失对应文件。

快速调试配置

你可以给CI配置加目录打印命令,直观确认CI环境的文件结构:

stages:
    - testing

Testing:
    stage: testing
    image: node:latest
    services:
        - mongo:latest
    before_script:
        - pwd # 打印当前工作目录,确认在项目根路径
        - ls -la # 打印根目录所有文件,确认controllers目录存在
        - ls -la controllers # 打印controllers目录下的文件,核对UserController是否存在、大小写是否匹配
        - npm install --no-optional
    script:
        - npm run test

运行后查看CI任务日志即可快速定位文件缺失或大小写不匹配的问题。

后续前置问题处理

本次报错虽和数据库无关,但你后续解决模块问题后大概率会遇到MongoDB连接失败问题,提前处理:

  • .env文件一般不会提交到代码仓库,CI环境默认没有该文件,你需要进入GitLab项目的设置->CI/CD->变量页面,添加所有需要的环境变量(包括MongoDB连接字符串)。
  • CI中MongoDB服务的地址不是localhost,而是你配置的service名mongo,所以测试环境的Mongo连接字符串应该为mongodb://mongo:27017/你的测试库名称。

内容的提问来源于stack exchange,提问作者KlaasOrnak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:07