Next.js重装node_modules后构建报@popperjs/core模块路径导出错误
问题触发原因
@popperjs/core 从v2.11.0版本开始调整了package.json中的exports字段规则,禁止了./lib/enums这类深层路径的直接导入,只有官方对外暴露的路径才允许被引用。
你之前的项目依赖锁文件(package-lock.json/yarn.lock)中原先固定了低版本的@popperjs/core,所以一直运行正常,清空依赖重装后,间接依赖拉取了最新的不兼容版本,才触发了这个报错。
结合你给出的package.json配置,版本冲突的来源大概率是两处:
- 主项目安装的
react-bootstrap@1.4.0和自定义依赖库my-library peer依赖要求的react-bootstrap@1.6.0版本不匹配,导致重复安装多份react-bootstrap及其关联的popper依赖 - 项目中安装的
react-date-range、react-phone-input-2等第三方组件也依赖@popperjs/core,版本不一致也会触发这个问题
解决方案
方案1:固定兼容版本(推荐)
在主项目的package.json依赖中直接指定低版本的@popperjs/core,覆盖间接依赖的版本:
"dependencies": { "@popperjs/core": "2.10.2", // 其他原有依赖保持不变 }
同时将主项目的react-bootstrap版本升级到1.6.0,和自定义库的peer依赖版本对齐,避免依赖冲突。
修改完成后删除node_modules、依赖锁文件,重新执行npm install后再构建即可。
方案2:临时绕过导出限制
如果暂时不想调整依赖版本,可以在next.config.js中添加webpack配置,关闭exports字段的校验:
module.exports = { // 其他原有配置保持不变 webpack: (config) => { config.resolve.exportsFields = []; return config; } }
该方案仅为临时兜底,不建议长期使用。
内容的提问来源于stack exchange,提问作者Victor Harlan Lacson
相关产品推荐
相关产品推荐

