NextJS v10.2.3执行next build时提示找不到constants.js模块
解决Next.js 10.2.3执行
next build时出现MODULE_NOT_FOUND找不到constants.js的问题 问题描述
使用Next.js ^10.2.3版本执行next build命令时,遇到以下错误:
Error: Cannot find module 'next/dist/shared/lib/constants.js' type: 'Error', code: 'MODULE_NOT_FOUND', requireStack: [ '.next/server/pages/_document.js', '/usr/local/lib/node_modules/next/dist/server/require.js', '/usr/local/lib/node_modules/next/dist/server/load-components.js', '/usr/local/lib/node_modules/next/dist/build/utils.js', '/usr/local/lib/node_modules/next/dist/build/worker.js', '/usr/local/lib/node_modules/next/dist/compiled/jest-worker/processChild.js' ]
已尝试删除node_modules和.next文件夹,重新执行npm install && next build,问题仍未解决。
解决方法
1. 对齐全局与本地Next.js版本
错误栈显示构建时调用了全局安装的Next.js,但全局版本可能和项目本地依赖的^10.2.3不匹配,导致内部文件路径不一致:
- 查看全局版本:
next -v - 查看项目本地版本:项目目录下执行
npm list next - 若版本不一致,卸载全局Next.js:
npm uninstall -g next,之后用本地版本执行构建:npx next build
2. 彻底清理缓存与依赖
缓存损坏可能导致依赖安装不完整:
- 清理npm缓存:
npm cache clean --force - 删除
node_modules、.next、package-lock.json文件 - 重新安装依赖:
npm install - 再次执行构建:
next build
3. 检查自定义_document.js
错误起点是.next/server/pages/_document.js,自定义_document.js可能存在异常引用:
- 打开项目中
pages/_document.js,检查是否有引用Next.js内部不存在的模块,或语法错误 - 暂时替换为默认
_document.js代码(如下),尝试构建验证:
import Document, { Html, Head, Main, NextScript } from 'next/document' class MyDocument extends Document { static async getInitialProps(ctx) { const initialProps = await Document.getInitialProps(ctx) return { ...initialProps } } render() { return ( <Html> <Head /> <body> <Main /> <NextScript /> </body> </Html> ) } } export default MyDocument
4. 锁定Next.js到固定版本
^10.2.3可能安装了10.2.3以上的小版本,导致内部文件结构变化:
- 修改
package.json中的Next.js依赖为固定版本:
"next": "10.2.3"
- 重新执行
npm install和next build
内容的提问来源于stack exchange,提问作者kakakakakakakk
相关产品推荐
相关产品推荐

