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扫描。
验证步骤
- 本地运行
npx eslint .,确认_tests文件夹不再报错; - 推送修改到测试分支,先部署验证,没问题再合并到主分支。
内容的提问来源于stack exchange,提问作者BenjaminK
相关产品推荐
相关产品推荐

