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

GitLab CI执行npm run lint时加载@next/next插件失败问题排查

解决Windows正常但GitLab Runner(Ubuntu)执行npm run lint加载@next/next插件失败的问题

问题描述

本地Windows环境执行npm run lint无异常,但在Ubuntu系统的GitLab Runner中运行该命令时,出现加载@next/next插件失败的错误,报错信息:

Failed to load plugin '@next/next' declared in '.eslintrc.json » eslint-config-next/core-web-vitals » /home/gitlab-runner/builds/iPXPkofu/0/isi/micat/front_end/node_modules/eslint-config-next/index.js': Unexpected token '.'
Referenced from: /home/gitlab-runner/builds/iPXPkofu/0/isi/micat/front_end/node_modules/eslint-config-next/index.js

当前.eslintrc.json内容:

{
  "extends": "next/core-web-vitals"
}

尝试将extends改为"next"后,问题仍存在。项目package.json内容如下:

{
  "name": "micat",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build && next export",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "bootstrap": "5.1.3",
    "crossfilter2": "1.5.4",
    "d3": "7.5.0",
    "dc": "4.2.7",
    "exceljs": "^4.3.0",
    "next": "12.2.0",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "eslint": "8.18.0",
    "eslint-config-next": "12.2.2",
    "eslint-plugin-jest": "24.4.0",
    "eslint-plugin-jsx-a11y": "6.6.0",
    "eslint-plugin-node": "11.1.0",
    "eslint-plugin-react-hooks": "4.6.0",
    "jest": "28.1.2",
    "jest-cli": "27.2.0",
    "jest-jasmine2": "27.2.0"
  }
}

问题原因及解决方案

这不是Next.js的Bug,核心原因是Node.js版本不兼容,其次是依赖版本不一致。Unexpected token '.'通常表示代码使用了低版本Node.js不支持的语法(比如可选链?.),而GitLab Runner环境的Node.js版本低于要求。

1. 统一Node.js版本

  • 先在本地Windows执行node -v查看当前使用的Node.js版本
  • 在GitLab CI配置文件(.gitlab-ci.yml)中指定相同版本,示例:
    before_script:
      - nvm install 16.x # 替换为你本地的Node.js版本
      - nvm use 16.x
      - npm install
    

2. 对齐Next.js与eslint-config-next版本

你的package.json中next版本为12.2.0,eslint-config-next为12.2.2,版本不一致可能引发兼容问题。将两者改为相同版本,比如都用12.2.0:

"dependencies": {
  "next": "12.2.0"
},
"devDependencies": {
  "eslint-config-next": "12.2.0"
}

修改后执行npm install更新依赖。

3. 清理缓存重新安装依赖

在GitLab Runner执行流程中添加清理步骤,避免旧依赖缓存干扰:

rm -rf node_modules package-lock.json
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:45:32