remix-run/remix · error · CliError
RMX_ROUTE_MAP_LOADER_SIGNAL
RMX_ROUTE_MAP_LOADER_SIGNAL
Error message
Route-map loader exited from a signal
What it means
The subprocess the Remix CLI uses to load your route map was terminated by a signal (e.g. SIGSEGV, SIGKILL, OOM) rather than exiting normally. This usually points to a crash or environment kill during evaluation of app/routes.ts.
Source
Thrown at packages/cli/src/lib/errors.ts:118
title: 'Remix configuration not found',
fix: 'Check the --config path and try again.',
},
remoteSkillDataMissing: {
code: 'RMX_REMOTE_SKILL_DATA_MISSING',
title: 'Could not find remote Remix skill data',
},
routeMapLoaderFailed: {
code: 'RMX_ROUTE_MAP_LOADER_FAILED',
title: 'Route-map loader failed',
fix: 'Check app/routes.ts and make sure it exports a named `routes` value with a valid route map.',
},
routeMapLoaderInvalidJson: {
code: 'RMX_ROUTE_MAP_LOADER_INVALID_JSON',
title: 'Route-map loader returned invalid JSON',
fix: 'Check app/routes.ts and make sure route-map loading does not write extra output.',
},
routeMapLoaderSignal: {
code: 'RMX_ROUTE_MAP_LOADER_SIGNAL',
title: 'Route-map loader exited from a signal',
fix: 'Check app/routes.ts for side effects or runtime issues and try again.',
},
routeOwnerPlanUnresolved: {
code: 'RMX_ROUTE_OWNER_PLAN_UNRESOLVED',
title: 'Could not resolve a route owner plan',
},
routesFileNotFound: {
code: 'RMX_ROUTES_FILE_NOT_FOUND',
title: 'Could not find app/routes.ts',
fix: 'Run this command inside a Remix app that has app/routes.ts.',
},
targetDirectoryNotEmpty: {
code: 'RMX_TARGET_DIRECTORY_NOT_EMPTY',
title: 'Target directory is not empty',
fix: 'Re-run with --force to continue.',
},
targetPathNotDirectory: {View on GitHub (pinned to 9696913134)
Solutions
- Re-run the command once to rule out transient termination.
- Check for crash-prone native imports in app/routes.ts and make them lazy.
- Increase available memory if the loader is being OOM-killed (check dmesg / container limits).
- Remove side effects from app/routes.ts as the error's fix hint suggests.
Defensive patterns
Strategy: retry
Try / catch
try {
await loadRouteMap()
} catch (error) {
if (error.code === 'RMX_ROUTE_MAP_LOADER_SIGNAL') {
// check for native-module crashes / OOM, then retry once
}
} Prevention
- Avoid native imports in route config.
- Keep memory headroom in containers.
- Make route-map imports lazy.
When it happens
Trigger: A native module loaded by app/routes.ts segfaulting, the loader process being OOM-killed, or manual termination of the CLI's child process while loading routes.
Common situations: Native dependencies (sharp, esbuild bindings, database drivers) crashing under the loader's runtime; memory-constrained containers where the loader is OOM-killed; stray process managers restarting children.
Related errors
- RMX_ROUTE_MAP_LOADER_SIGNAL
- throw new AssertionError(options)
- ${matcherName} requires a mock function with a .mock.calls p
- throw new AssertionError({ message, actual, expected, operat
- expect(received).toThrow() requires a function (got ${typeof
AI-assisted analysis of remix-run/remix@9696913134 (2026-08-27).
Data as JSON: /api/errors/1b25c9cfafb10249.
Report an issue: GitHub.