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
相关产品推荐
相关产品推荐

