Next.js本地yarn dev报错:标识符_util已声明,线上构建正常求助
本地Next.js dev环境出现ModuleParseError问题排查
无任何项目更新操作的情况下,本地执行yarn dev时突然出现如下错误,但yarn build构建正常,推送到Vercel部署运行也无问题:
ModuleParseError: Module parse failed: Identifier '_util' has already been declared (35:6) File was processed with these loaders: * ./node_modules/next/dist/build/webpack/loaders/next-swc-loader.js You may need an additional loader to handle the result of these loaders. | const _store = require("../shared/store"); | const _api = require("../shared/util/api"); > const _util = require("../shared/util"); | const Home = ({ homeData })=>{ | const router = (0, _router.useRouter)(); This error happened while generating the page. Any console logs will be displayed in the terminal window.
推测报错与util相关导入有关,但注释其中一个导入后会出现其他随机错误。已尝试以下操作但均无效:
- 清除node_modules、删除yarn.lock、执行
yarn cache clean - 更新/回滚依赖版本
- 修改tsconfig.json配置ES版本
- 将Node.js从16升级到18
排查建议
清除SWC缓存
Next.js dev模式依赖SWC缓存编译结果,缓存损坏可能触发异常。执行命令清除缓存后重启dev:rm -rf .next/cache检查路径大小写一致性
本地系统(如MacOS)大小写不敏感,而Vercel的Linux环境大小写敏感。若util相关导入路径存在大小写不一致(如../shared/Util和../shared/util),本地dev时可能触发重复声明错误,build阶段未暴露。逐一检查所有util导入路径,确保大小写完全匹配。排查别名配置冲突
查看tsconfig.json或jsconfig.json中的paths配置,是否存在指向util的重复别名映射。例如:{ "compilerOptions": { "paths": { "@/util/*": ["./shared/util/*"], "@/util": ["./shared/util"] } } }这类配置可能导致不同导入路径解析为同一模块,触发重复声明。
检查自定义Webpack配置
若项目有自定义next.config.js,检查是否修改了SWC loader设置或添加了影响模块解析的插件。临时注释自定义Webpack配置,重启dev看是否恢复正常。重启开发环境与编辑器
本地dev模式下文件监听可能出现缓存异常,关闭所有IDE/编辑器后重启开发服务器,避免文件锁定导致的解析问题。
内容的提问来源于stack exchange,提问作者TechGolemn
相关产品推荐
相关产品推荐

