This page covers scenarios you may encounter during the Build step that will require you to troubleshoot, including:
You can use the following views on your dashboard to troubleshoot a build:
- Build logs - the console output when your deployment is building which can be found under the Deployment Status section of the Project's Deployment page
- Source tab - the output of the build after the deployment is successful. This can also be accessed by appending
/_srcto the Deployment URL
- Functions tab - the live console output for Serverless Functions at runtime (if your project uses this feature). This can also be accessed by appending
/_logsto the Deployment URL
You can navigate to these views from the Deployment page by clicking on the Source tab, the Functions tab or the Building accordion as shown below.
If your build fails, the related error is reported in the logs found inside the Building accordion described above. To access these logs, you have the following options:
- If the failed build is the most recent deployment, you will see an Error in the Upcoming section below the Deployment preview on the Project's overview page as shown below. Click on link next to the Error to be directed to the specific Deployment's page
- You can also access the errored deployment's page from the Deployments tab as shown below
Once you are on the errored deployment's page, you will be shown a summary of the error in the preview section. This error can often be generic as in the example below.
To investigate further, open the Building accordion to expand the logs. Scroll down until you find a red section where Error is mentioned. It can be mentioned once or multiple times. In many cases, the last mention is not indicative like in the example below where it says yarn run build exited with 1. If you look a few lines above, you will see an additional error which in this case indicates where the problem is with a link for more details. Sometimes, an error may not be mentioned in the lines above but the output will often help you identify where the problem is.
It is recommended to build your project on your local machine first (the build command varies per project) before deploying on Vercel. This will catch issues specific to your code or to your project's dependencies. In the example above, when the command
npm run build (that runs
next build) is run in the local console for a Next.js project, the error happens after building locally.
Sometimes, your Deployment Build can hit platform limits so that the build will be cancelled and throw a corresponding error that will be shown in the Build logs. Review the limits below in case you run into them.
Every Build is provided with the following resources:
- 8192 MB of memory
- 4 CPUs
- 13 GB of disk space
This cannot be increased. If your build is cancelled due to any of these three limits, you will see errors like
memory allocation error or
Out of disk space in the Build logs. Review the below steps to help navigate this situation:
- Review what package the error is related to and explore the package's documentation to see if the memory allocation can be customized with an install or Build command
- Review what you are importing in your code such as third-party services, icons and media files
The total build duration is shown on the Vercel Dashboard and includes all three steps: building, checking, and assigning domains. Each step also shows the individual duration.
A Build can last for a maximum of 45 minutes. If the build exceeds this time, the deployment will be canceled and the error will be shown on the Deployment's Build logs. If you run into this limit, review this guide that explains how to reduce the Build time with a Next.js Project.
The maximum size of the Build's cache is 1 GB. It is retained for one month and it applies at the level of each Build cache key.
It is not possible to manually configure which files are cached at this time.
You may come across the following Build-specific errors when deploying your Project. The link for each error provides possible causes of the error that can help you troubleshoot.
The first Build in a Project will take longer as the Build cache is initially empty. Subsequent builds that have the same Build cache key will take less time because elements from your build, such as framework files and node modules, will be reused from the available cache. The next sections will describe the factors that affect the Build cache to help you decrease the Build time
Note that the framework detection is dependent on the preset selection made in the Build settings. You should make sure that the correct framework is set for your project for optimum build caching.
At the beginning of each build, the previous Build's cache is restored prior to the Install Command or Build command executing. Each deployment is associated with a unique Build cache key that is derived from the combination of the following data:
Let's say that under your account
MyTeam, you have a project
MySite that is connected to your Git repository
MyCode on the
main branch for the production environment. When you make a commit to the
main branch for the first time, you trigger a build that creates a production deployment with a new unique cache key. For any new commits to the
main branch of
MyCode, the existing Build cache is used as long as
MySite is under
If you create a new Git branch in
MyCode and make a commit to it, there is no cache for that specific branch. In this case, the last production Deployment cache is used to create a preview deployment and a new branch cache is created for subsequent commits to the new branch.
If you use Serverless Functions to process HTTP requests in your project, each Serverless Function is built separately in the Build step and has its own cache, based on the Runtime used. Therefore, the number and size of Serverless Functions will affect your Build time. For Next.js projects, Serverless Functions are bundled to optimize Build resources as described here.
At the end of each Build step, successful builds will update the cache and failed builds will not modify the existing cache.
Since development dependencies (for example, packages such as
Babel) are not needed in production, you may want to prevent them from being installed when deploying to Vercel to reduce the Build time. To skip development dependencies, customize the Install Command to be
npm install --only=production or
yarn install --production.
Sometimes, you may not want to use the Build cache for a specific deployment. You can invalidate or delete the existing Build cache in two ways:
- Use the "Redeploy" button for the specific deployment in the Project's Deployments page. In the popup window that follows, leave the checkbox Redeploy with existing Build Cache unchecked. This is explained in more detail here
vercel --forcewith Vercel CLI to build and deploy the project without the Build cache
- Use an Environment Variable
VERCEL_FORCE_NO_BUILD_CACHEwith a value of
trueon your project to skip the Build cache
Vercel uses Amazon Linux 2 as a base image for all builds and several pre-installed packages.
The following packages are pre-installed in the build image with
yum, the default package manager for Amazon Linux 2.
To run the build image locally with Amazon Linux 2, use the following command:
docker run --rm -it amazonlinux:2.0.20191217.0 sh
When you are done, run
exit to return.
php to your path, run the following command:
amazon-linux-extras install php7.4
cargo to your path, run the following command:
amazon-linux-extras install rust1
go to your path, run the following command:
amazon-linux-extras install golang1.11
Learn more about Amazon Linux Extras.
The build image includes access to repositories with stable versions of popular packages. You can list all packages with the following command:
You can search for a package by name with the following command:
yum search my-package-here
You can install a package by name with the following command:
yum install my-package-here -y
You can use Amazon Linux Extras if you need a new or newer version of an existing software package that is not included in the default repositories.
You can list extra packages with the following command:
You can install extra packages with the following command:
amazon-linux-extras install my-package-here