Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

!!! CustomerError: Can't find required-server-files.json in build output directory #3869

Open
Quska45 opened this issue Dec 21, 2023 · 15 comments
Labels
question Further information is requested

Comments

@Quska45
Copy link

Quska45 commented Dec 21, 2023

No description provided.

@Quska45 Quska45 added the question Further information is requested label Dec 21, 2023
@alexandersg2
Copy link

alexandersg2 commented Dec 22, 2023

I've also been experiencing the error "CustomerError: Can't find required-server-files.json in build output directory" for the past week on my Nextjs app. It doesn't seem to be related to any changes I've made, as I've sometimes been able to revert and then re-add commits to achieve a successful build, only to run into the same issue a few commits later.

This is now completely blocking my deployments.

@rayedturbine
Copy link

Same issue here, Any response yet from Amplify team?

@alexandersg2
Copy link

Any updates on this? I've been unable to deploy new code for 2 weeks now and am getting desperate. If the Amplify team can't look into this, can anyone tell me the next best way to deploy an Amplify app? Cheers

@alexandersg2
Copy link

I seem to have fixed the issue by updating the line **/*.js to src/**/*.js in my tsconfig.json.

@abe123442
Copy link

I am also getting this problem. The solution to update **/*.js to src/**/*.js did not work for me. Can Amplify team look into this?

@karpolan
Copy link

Got the same error after successful build of Next.js application :)

I use Next.js v14 with { output: "export" } config.

I run on custom build image with Node 20: public.ecr.aws/docker/library/node:20.11.0

@rayedturbine
Copy link

rayedturbine commented Jan 27, 2024 via email

@karpolan
Copy link

karpolan commented Jan 27, 2024

The issue disappears if change baseDirectory from "out" back to default ".next"

P.S. I also changed the building image to "Amazon Linux:2023"

image

@karpolan
Copy link

karpolan commented Jan 27, 2024

LOL, but after a successful build and deployment, the website is not working...

I love Apmlify (c)

@NickRumenov
Copy link

NickRumenov commented Jan 29, 2024

Any updates on this? Still facing the problem

@dancj
Copy link

dancj commented Apr 5, 2024

I'm facing this issue as well with next 14.1.4 app with SSG pages hosted on amplify.

The next docs are explicit about using output: "export" in my next.config.js and that it will output to out folder:
https://nextjs.org/docs/app/building-your-application/deploying/static-exports

It builds locally but with my build settings like this, getting the Can't find required-server-files.json error on amplify.

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: out
    files:
      - '**/*'
  cache:
    paths:
      - .next/cache/**/*
      - node_modules/**/*

@isoppp
Copy link

isoppp commented Jun 12, 2024

I faced a similar problem when trying to host static Storybook files which is in Next.js dir. My issue was resolved by switching the platform from WEB_COMPUTE to WEB using the CLI.

aws amplify update-app --app-id your-amplify-app-id --platform WEB --region your-region

Reference: https://docs.aws.amazon.com/amplify/latest/userguide/redeploy-ssg-to-ssr.html#update-platform

Hopefully it could be helpful.

@pvhuwung
Copy link
Contributor

Yes the baseDirectory: .next will not running correctly if you want to build a NextJS - SSG, static site generating.

So basically you may need to change it to baseDirectory: out in the amplify.yml, also don't use next export, because it no longer supported by NextJS from v13.4.0 and has been removed from `v14.0.0, which will causing error when building in AWS Amplify (Reference

You will need to use out: "export" in you next.config.js file, in the nextConfig. You can try to build from here

And then if your build still causing error, maybe because Amplify does not recognise your app as a SSR or SSG, so you might need to go to AWS CLI to configure

Remember to create an IAM account with the correct provision rules to work with Amplifier

  1. Run the following AWS CLI commands
aws amplify update-app --app-id <APP_ID> --platform WEB --region <REGION>
aws amplify update-branch --app-id <APP_ID> --branch-name <BRANCH_NAME> --framework 'Next.js - SSG' --region <REGION>
  1. Update your build spec to point the baseDirectory to out. e.g.
version: 1
frontend:
  ...
  artifacts:
    baseDirectory: out
  ...
  1. Trigger rebuild through commit, or manually

  2. You ready to go

Sometime the URL by Amplify, for example the built one is mysite.com, but when you clicked it appear nothing, actually because the actual routes is mysite.com/index.html

So if you want to set up the URL, You can go to the AWS Amplify Hosting console, go under All app / <Your Repo Name> / Hosting, and go to the Rewrites and redirects tab.

Then for example, if you want:

mysite.com/index.html -> mysite.com

You can set:

Source URL Target URL Type Country Code
/index.html / 200 (Rewrite) <Can be blank>

If you have some other routes, like /example.html but you dont want the .html ending, you can do this

mysite.com/example.html -> mysite.com/example

Source URL Target URL Type Country Code
/<any>.html /<any> 200(Rewrite) <Can be blank>

Thats my initial approach, hope that it is useful. Peace!

@datnguyennnx
Copy link

datnguyennnx commented Jun 20, 2024

Hi there, three months ago. I have the same bug. I know a way to remedy that bug. 

I have explained it here: 

Check it out here:

It's helpful for you. Leave a thumbs up for me to know you solved it. 

@nabanita-sarkar
Copy link

nabanita-sarkar commented Sep 29, 2024

For reference: I am using nextjs v14 export mode to generate html files in pages router

I removed everything from my repo in a new branch. Put inly a dummy a index.html and then connect the repo to amplify. So it doesn't auto detect the repo to be nextjs app. Now I change the build to this -

version: 1
applications:
  - appRoot: # Specify if there's a specific root directory for your app (optional)
    frontend:
      phases:
        preBuild:
          commands:
            # Install dependencies in all branches
            - npm ci
        build:
          commands:
            # Build the Next.js static site in all branches
            - npm run build
      artifacts:
        baseDirectory: out  # Output directory for Next.js static files
        files:
          - '**/*'  # Include all files in the output directory
      cache:
        paths:
          - node_modules/**/*  # Cache node_modules to speed up future builds
    environment:
      - NODE_ENV=production  # Ensure the environment is set to production for all branches

and then merge previous branch which had actual Next.Js code to this new branch. Then push and let amplify do auto deployment. It worked like a charm ✨

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests