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

Next.js部署Vercel时_tests文件夹ESLint报错,本地无问题求助

解决Vercel部署时ESLint检测根目录_tests文件夹的问题

本地与Vercel检查不一致的原因

Next.js默认的next/core-web-vitals配置确实只扫描pages/、components/、lib/和src/,但Vercel部署流程的ESLint执行逻辑和本地next lint有差异:

  • 本地你用的是Next.js封装的next lint命令,严格遵循Next.js的扫描范围;
  • Vercel部署时可能直接调用ESLint CLI扫描整个项目根目录,不会自动继承Next.js的目录限制,除非你明确配置忽略规则。

本地模拟Vercel检查的方法

直接在本地执行ESLint CLI的全目录扫描,就能复现Vercel的报错:

npx eslint .

这个命令会扫描根目录下所有文件,和Vercel部署时的检查范围完全一致。

必须补充的配置

1. 新增.eslintignore文件

在项目根目录创建.eslintignore,写入以下内容:

_tests/
**/*.test.js
**/*.test.tsx
# 可添加其他测试相关文件/目录

不管是本地ESLint CLI还是Vercel的检查,都会自动跳过这些路径。

2. 在ESLint配置中添加ignorePatterns

如果不想用.eslintignore,可以直接在你的ESLint配置文件(如.eslintrc.json)里配置忽略规则:

{
  "extends": "next/core-web-vitals",
  "ignorePatterns": ["_tests/**/*", "**/*.test.*"]
}

这个配置优先级高于.eslintignore,能强制ESLint忽略指定文件。

3. 锁定npm run lint的扫描范围

检查package.json里的lint脚本,确保它严格遵循Next.js的默认目录,避免意外扫描根目录:

{
  "scripts": {
    "lint": "next lint --dir pages --dir components --dir lib --dir src"
  }
}

这样本地执行npm run lint时只会扫描指定目录,和你预期的一致。

4. 检查Vercel部署设置

登录Vercel控制台,进入项目的Build & Development Settings,确认Build Command是默认的next build,没有额外添加eslint .之类的命令。如果有自定义命令,确保它不会触发全目录ESLint扫描。

验证步骤

  1. 本地运行npx eslint .,确认_tests文件夹不再报错;
  2. 推送修改到测试分支,先部署验证,没问题再合并到主分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:10:42