You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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/**/*

验证步骤

  1. 推送代码到仓库对应分支
  2. 触发Amplify构建,查看构建日志是否正确执行NX的Vite构建命令
  3. 检查构建产物是否正确部署,无required-server-files.json相关错误

内容的提问来源于stack exchange,提问作者Haseeb Burki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:27:22