Why does my Serverless Function work locally but not when deployed?

Learn how to troubleshoot your Serverless Functions.
Last updated on February 4, 2025
Functions

There are a few nuances with Vercel Functions that may cause them to work in your local environment, but not when deployed. Read on to learn how to troubleshoot such a situation.

One of the common reasons for different behavior across environments is whether or not your Vercel Functions depend on packages with native dependencies. Native in this context refers to software that needs to be compiled and integrated with JavaScript through a layer like node-gyp.

A great example of such a package is the bcrypt library which is a popular choice for encrypting passwords. You might be able to install bcrypt without issues on your local machine, but there is no guarantee that those native packages are available in the Function environment.

You should look for alternative packages that achieve similar results without native dependencies for a consistent experience. bcryptjs is an example of a pure JavaScript implementation that works across different environments without any native dependencies.

Note: You may be able to install the necessary shared libraries in the Build Image prior to running npm install

On your local machine, you have access to a persistent filesystem that you can read from and write to. This is not the case for Vercel Functions. Learn more about reading files in Vercel Functions.

If you have any environment variables defined in your local environment that your Vercel Functions depend on, you'll need to make sure they are defined the same way in your Preview, and Production environments. The Environment Variables UI provides an easy way to do so.

Logging is essential to debugging your software. Place log statements in key areas of your code to better understand what's going on. Make sure to install a Log Drain Integration for your deployed functions so you can have persistent debugging information available when needed. Consult your logs to see if there are any differences across environments.

If you're still stuck after considering all of the above and need a fresh pair of eyes on your problem, consider starting a discussion to get help from our Vercel Community. When starting discussions requesting help, please provide detailed steps on how to reproduce the issue you're running into along with the solutions you've tried so far.

Couldn't find the guide you need?