Nx工作区NextJS生产构建npm run start失败:缺失src/utils文件夹
Nx Next.js 生产构建后本地运行
npm run start报错找不到../src/utils/config 问题原因分析
- 产物路径引用错误:
nx run app:build:production生成的with-nx.js文件里硬编码了指向项目根目录../src/utils/config的相对路径,但Nx默认不会把项目根的src文件夹复制到dist产物中,导致纯Next.js运行模式下找不到该文件。 - 运行上下文差异:
nx run app:serve:production是在项目根目录执行,会加载Nx全局上下文,能解析项目根的文件;而直接进入dist目录运行npm run start是纯Next.js环境,没有Nx上下文,无法识别外部路径的依赖。 - Vercel部署适配:Vercel的Nx集成会自动处理构建产物的路径依赖,部署时使用的是项目根目录的配置文件而非
dist里的生成文件,因此不会触发该错误。
解决步骤
步骤1:修正with-nx.js的无效引用
进入dist/app目录,打开with-nx.js文件,找到require('../src/utils/config')相关代码:
- 若项目中确实不存在
src/utils/config,直接删除或注释这行无效引用。 - 若存在该文件但路径错误,修改为
dist目录内的相对路径(比如./utils/config,需确保文件已被复制到对应位置)。
步骤2:配置Nx构建时复制必要文件
如果项目中实际存在src/utils/config,修改项目根目录的project.json,在build目标的assets数组中添加该文件夹,确保构建时同步到dist:
{ "targets": { "build": { "executor": "@nx/next:build", "options": { "outputPath": "dist/app", "assets": [ "src/utils/config" ] } } } }
重新执行nx run app:build:production后,dist/app下会出现对应文件,再运行npm run start即可正常启动。
步骤3:更新Nx Next.js插件
如果是插件版本bug导致生成无效的with-nx.js,执行命令更新依赖:
npm update @nx/next
更新后重新构建,检查with-nx.js是否还存在无效引用。
步骤4:临时应急方案(不推荐长期使用)
若需快速验证,手动在dist/app目录创建对应文件夹和空文件:
mkdir -p dist/app/src/utils touch dist/app/src/utils/config.js
进入dist/app执行npm run start即可临时解决报错。
内容的提问来源于stack exchange,提问作者dasunNimantha
相关产品推荐
相关产品推荐

