vercel/next.js · error
"next start" does not work with "output: standalone" configu
Error message
"next start" does not work with "output: standalone" configuration. Use "node .next/standalone/server.js" instead.
What it means
NextNodeServer.getServer throws when `next start` runs against a build produced with output: 'standalone'; that mode emits a self-contained server.js meant to be executed directly with node, so the regular programmatic server refuses to load instead of serving a broken setup.
Source
Thrown at packages/next/src/server/next.ts:383
config.experimental.isExperimentalCompile =
serializedConfig.experimental.isExperimentalCompile
} catch (_) {
// if distDir is customized we don't know until we
// load the config so fallback to loading the config
// from next.config.js
}
}
return config
}
private async getServer() {
if (!this.serverPromise) {
this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {
if (!this.options.dev) {
if (conf.output === 'standalone') {
if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {
log.warn(
`"next start" does not work with "output: standalone" configuration. Use "node .next/standalone/server.js" instead.`
)
}
} else if (conf.output === 'export') {
throw new Error(
`"next start" does not work with "output: export" configuration. Use "npx serve@latest out" instead.`
)
}
}
this.server = await this.createServer({
...this.options,
conf,
})
if (this.preparedAssetPrefix) {
this.server.setAssetPrefix(this.preparedAssetPrefix)
}
return this.serverView on GitHub (pinned to 0eb3775416)
Solutions
- Run `node .next/standalone/server.js` instead of `next start` when using output: standalone.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/next/src/server/next.ts:383 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19).
Data as JSON: /api/errors/bbbf1635ef8f4d63.
Report an issue: GitHub.