Skip to content
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Menu

Advanced Node.js Usage

Last updated February 27, 2026

To use Node.js, create a file inside your project's api directory. No additional configuration is needed.

The entry point for src must be a glob matching .js, .mjs, or .ts files that export a default function.

To disable helpers:

  1. From the dashboard, select your project and open Settings in the sidebar.
  2. Select Environment Variables from the left side in settings.
  3. Add a new environment variable with the Key: NODEJS_HELPERS and the Value: 0. You should ensure this is set for all environments you want to disable helpers for.
  4. Pull your env vars into your local project with the following command:
    terminal
    vercel env pull

For more information, see Environment Variables.

To install private npm modules:

  1. From the dashboard, select your project and open Settings in the sidebar.
  2. Select Environment Variables from the left side in settings.
  3. Add a new environment variable with the Key: NPM_TOKEN and enter your npm token as the value. Alternatively, define NPM_RC as an Environment Variable with the contents of ~/.npmrc.
  4. Pull your env vars into your local project with the following command:
    terminal
    vercel env pull

For more information, see Environment Variables.

In some cases, you may wish to include build outputs inside your Vercel Function. To do this:

  1. Add a vercel-build script within your package.json file, in the same directory as your Vercel Function or any parent directory. The package.json nearest to the Vercel Function will be preferred and used for both installing and building:
package.json
{
  "scripts": {
    "vercel-build": "node ./build.js"
  }
}
  1. Create the build script named build.js:
build.js
const fs = require('fs');
fs.writeFile('built-time.js', `module.exports = '${new Date()}'`, (err) => {
  if (err) throw err;
  console.log('Build time file created successfully!');
});
  1. Finally, create a .js file for the built Vercel functions, index.js inside the /api directory:
api/index.js
const BuiltTime = require('./built-time');
module.exports = (request, response) => {
  response.setHeader('content-type', 'text/plain');
  response.send(`
    This Vercel Function was built at ${new Date(BuiltTime)}.
    The current time is ${new Date()}
  `);
};

By default, we disable experimental support for requiring ES Modules. You can enable it by setting the following Environment Variable in your project settings:

  • NODE_OPTIONS=--experimental-require-module

Was this helpful?

supported.