Builds
The publish directory is missing
The log ends with'dist' directory does not exist. (with your publish directory’s name). After the build, Sevalla found no folder by that name.
- Check where your build writes its output, and set the Publish directory to it. See Settings for common static site generators.
- The publish directory is relative to the Root directory: with the root directory
apps/docs, writedist, notapps/docs/dist. - If Build site before publishing is off, nothing creates the folder: commit it, or turn the build on.
The publish directory is over 1 GB
The log ends with'dist' directory size exceeds 1 GB limit. A deployment can publish at most 1 GB.
- Check that the publish directory is the build’s output, not the whole repository.
- Move large media, such as videos, to object storage and link to it.
- Leave out files the site doesn’t serve, such as source maps.
The build command fails
The log shows the command’s own error afterRunning build command:, and the deployment fails.
Missing script: "build": the build command names a script that isn’t inpackage.json. Update the Build command or add the script.- The same command works on your computer: build with the same Node version (see Node versions), and check that the environment variables the build needs are set for the deployment’s environment.
Wrong Node.js version
Errors such asThe engine "node" is incompatible with this module. mean the build used another Node.js version than your project needs. Sevalla doesn’t read engines or .nvmrc: choose the Node version in the build settings, then deploy again.
Dependencies fail to install
- The log warns
There is no lock file.and installs withnpm install. Commit yourpackage-lock.json,yarn.lock,pnpm-lock.yamlorbun.lockto the root directory, so the build uses your package manager and versions. See Package managers. - A private package fails to install: give the build its token as an environment variable, for example
NPM_TOKEN, and reference it from the project’s.npmrc.
The build stops after 30 minutes
A deployment fails when its build runs for 30 minutes. Commit your lockfile, remove steps the site doesn’t need from the build command, or build large parts ahead of time and commit the result.Images and other large files are tiny text files
Files tracked with Git LFS are published as pointer files when Git LFS is off. Turn on Git LFS and deploy again.Submodules fail to clone
The log shows a Git error while fetching the source. A private submodule must be on the same Git provider as the site’s repository, in a repository Sevalla can read. See Git submodules.Deployments
No deployment after a push
- Auto-deploy is off, or the push went to another branch than the default branch (with previews off). Check the site’s Settings tab. See Deploy automatically on push.
- The deployment shows Skipped: the deploy paths excluded the push.
- The site is built from a public repository: it deploys only by hand.
- The site already has 10 deployments queued or running.
- Sevalla lost access to the repository, for example after a change to the Kinsta GitHub App’s repository access. See Git providers.
Pending deployment limit reached
Pending deployment limit reached for static site "<id>" means the site has 10 deployments queued or running. Wait for them to finish, or cancel the ones you don’t need.
Deployment is in progress
Deployment is in progress, cannot delete site. appears when you update a setting or delete the site while a production deployment runs, even if you weren’t deleting it. Wait for the deployment to finish, or cancel it, then try again.
Operation blocked due to suspension
Operation blocked due to suspension for company "<id>" means the company is suspended, for example after a failed payment. You can’t create, update or deploy static sites until it’s resolved. See Failed payments.
Repository not found
Repository not found for URL "<url>", when you create a site or update its source, means Sevalla can’t read the repository. For a public repository, check the URL. For a private one, check that your Git account is connected and can access it; on GitHub, add the repository to the Kinsta GitHub App with Adjust GitHub repository access. See Git providers.
Site creation blocked
Site creation blocked due to limitations reached for company "<id>" means the company has 100 static sites. Delete sites you don’t use, or contact support.
The live site
The site shows a 404 page
- The site hasn’t been deployed successfully yet: its status isn’t Live. Check its deployments.
- The publish directory has no
index.html(or your Index file) at its top level. Check the publish directory, and that the build is on if the site needs one. - The page is
about.html, the URL is/about, and pretty URLs are off. Turn on pretty URLs, or link to/about.html. - File names are case-sensitive:
/About/doesn’t serveabout/index.html.
Old content after a deployment
- Your browser kept a file. Browsers keep files other than HTML for 30 days. Reload without the cache, and give such files content-hashed names or a short
Cache-Control. See Cache files that keep their names. - The first request after the switch. Each edge location picks up a new deployment on its next request, so the first request there can still return the previous version. Reload.
- You changed pretty URLs. The edge keeps responses it cached before the change: purge the cache.
Missing pages return status 200
The Error file build setting serves its page with status200. To return 404, clear the error file and add a 404 rule such as /* /404.html 404.
A single-page application returns 404 when you reload a route
The router’s paths have no files. Add the rule/* /index.html 200 to _redirects. See Serve a single-page application.
The browser reports too many redirects
Two redirects send the browser back and forth. Common causes: a rule that removes trailing slashes while pretty URLs add them, orwww and apex rules that point at each other. Remove one of the two.
Redirects and headers
Redirect rules have no effect
- Check the deployment’s log.
There were errors while parsing your redirect rules:means the deployment has no rules at all; fix the line it names and deploy again. No mention of the file means Sevalla didn’t find it: put it in the publish directory. - A file exists at the URL. Rules don’t apply over existing files unless they’re forced: add
!after the status, as in301!. See Force a rule. - An earlier rule matched first. Rules run from the top; move specific rules up.
- The status code isn’t supported. Use
200,301,302,303,307,308or404. - Conditions don’t match exactly. Query parameters must match the request’s full set, and a header value must equal the whole header.
- The path has encoded characters. Write spaces and non-ASCII characters percent-encoded in
from.
A redirect applies to every visitor
The rule has aCountry=, Language=, Role= or Cookie= condition. Sevalla ignores these conditions, so the rule matches every request. Remove the rule, or use a header condition.
Custom headers are missing
- The log shows
There were errors while parsing your header rules:: the deployment has no custom headers. Fix the line it names and deploy again. - The path doesn’t match the URL: paths are case-sensitive and a trailing slash matters, so
/aboutdoesn’t match/about/. See Path patterns. - The header is one Sevalla manages, such as
Content-Encoding. See Restricted headers.
curl -I https://<your-domain>/<path>.
Previews
No preview after a push
- Pull request previews are off, or the site is built from a public repository. See Pull request previews.
- The push went to the default branch: that’s a production deployment.
- The deploy paths excluded it (status Skipped).
- On GitHub, a new branch pushed with no new commits doesn’t start a preview.
Visit commit preview is disabled
The commit preview exists only once the deployment shows Deployed.A preview looks different from production
Previews build with the variables marked Preview, and they don’t apply pretty URLs. Check the variables’ availability on the Environment variables tab.Settings
Pretty URLs fail to turn on
Domain not found for service <id> means the site has no active primary domain yet, which happens before its first successful deployment. Deploy the site, then try again.
Purging the cache fails
No domains found for this service means the site has no active domains, for example before its first successful deployment. There’s nothing cached to purge yet.