AWS Amplify误识别NX monorepo中Vite应用为NextJS-SSR的问题
解决AWS Amplify误识别NX Monorepo中Vite应用为NextJS-SSR的问题
核心原因
Amplify会扫描整个仓库的文件(如next.config.js、.next目录),当monorepo中存在NextJS项目时,会默认将所有应用识别为NextJS-SSR,忽略自定义的构建配置。
可行解决方案
1. 为每个应用创建独立的Amplify应用实例
- 针对每个Vite应用和NextJS应用,分别在Amplify控制台创建独立的应用项目,均指向同一个NX monorepo仓库。
- 创建时选择手动设置构建配置,而非自动检测框架,避免Amplify误判。
2. 自定义Vite应用的amplify.yml构建规范
在Vite应用对应的Amplify项目中,配置明确的构建命令和输出目录,覆盖Amplify的自动检测逻辑:
version: 1 frontend: phases: preBuild: commands: - npm install - npx nx reset # 可选,清理NX缓存避免构建异常 build: commands: - nx build [你的Vite应用名称] --prod artifacts: # 指定NX构建Vite应用后的输出目录,通常为dist/apps/[应用名] baseDirectory: dist/apps/[你的Vite应用名称] files: - '**/*' cache: paths: - node_modules/**/* - .nx/cache/**/*
3. 禁用Amplify的自动框架检测(可选)
如果Amplify仍然自动识别为NextJS,可以在构建阶段添加命令强制覆盖框架识别:
在preBuild阶段加入:
- echo "AWS_AMPLIFY_FRAMEWORK=vite" >> $AMPLIFY_ENV_FILE
或者直接在Amplify控制台的环境变量中设置AWS_AMPLIFY_FRAMEWORK=vite,明确指定框架类型。
4. 确认NextJS应用的构建配置独立
NextJS应用的amplify.yml需单独配置,确保其构建命令和输出目录正确:
version: 1 frontend: phases: preBuild: commands: - npm install build: commands: - nx build [你的NextJS应用名称] --prod artifacts: baseDirectory: dist/apps/[你的NextJS应用名称] files: - '**/*' cache: paths: - node_modules/**/* - .nx/cache/**/*
验证步骤
- 推送代码到仓库对应分支
- 触发Amplify构建,查看构建日志是否正确执行NX的Vite构建命令
- 检查构建产物是否正确部署,无
required-server-files.json相关错误
内容的提问来源于stack exchange,提问作者Haseeb Burki
相关产品推荐
相关产品推荐

