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

GitLab CI/CD配置报错:找不到globals包,请求技术支持

解决GitLab CI中ESLint无法找到globals包的问题

问题原因

你全局安装eslint和globals后出现ERR_MODULE_NOT_FOUND,核心原因是ESLint的新配置格式(eslint.config.mjs)会从**项目本地的node_modules**中查找依赖,全局安装的包不在项目的模块搜索路径内,导致无法导入globals。另外你的CI配置存在重复执行npm ci的冗余操作,没必要在每个阶段都重新安装依赖。

解决方案步骤

1. 将ESLint相关依赖添加为项目开发依赖

在本地项目的server目录下执行以下命令,把所需包安装到项目本地:

npm install --save-dev eslint globals @eslint/js @stylistic/eslint-plugin-js

执行后这些依赖会出现在package.json的devDependencies中,确保CI执行npm ci时能自动安装它们。

2. 确认package.json的lint脚本配置

确保server/package.json里的lint脚本使用本地ESLint:

{
  "scripts": {
    "lint": "eslint src/**/*.js"
  }
}

本地ESLint会自动从项目node_modules加载依赖,无需全局安装。

3. 优化GitLab CI配置

删除全局安装步骤,复用install阶段的node_modules产物,修改后的.gitlab-ci.yml如下:

image: node:latest

stages:
  - install
  - lint
  - build

variables:
  NODE_ENV: production

install:
  stage: install
  script:
    - cd server
    - npm ci
  artifacts:
    paths:
      - server/node_modules/
    expire_in: 1h # 设置产物过期时间,节省存储空间

eslint:
  stage: lint
  dependencies:
    - install # 复用install阶段的node_modules
  script:
    - cd server
    - npm run lint
  allow_failure: false

build:
  stage: build
  dependencies:
    - install
  script:
    - cd server
    - npm run build
  artifacts:
    paths:
      - server/dist/

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID
      when: always

验证逻辑

  • install阶段仅执行一次npm ci,生成的node_modules作为产物传递给后续阶段
  • eslint阶段直接使用本地ESLint和依赖,彻底解决模块找不到的问题
  • 去除冗余安装操作,提升CI运行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:55:00