sveltejs/kit · warning

. Did you mean ? at

Error message

${description}. Did you mean ${corrected}? at ${path.resolve(misspelled)}

What it means

`check_spelling` in sync/utils.js detects that a user-referenced entry file (e.g. `src/hooks.server.js` vs `.ts`) appears to be a misspelling of a file that actually exists, and warns with the corrected filename and its resolved absolute path. Sync proceeds but the intended file may not be picked up.

Solutions

  1. Rename the file to the corrected basename shown in the warning (`git mv <misspelled> <corrected>`)
  2. Update the reference (config option or import) to point at the actual file extension
  3. Remove a stale duplicate file if both variants exist

Example fix

// before: config points to src/hooks.server.ts, but file is src/hooks.server.js
// after
git mv src/hooks.server.js src/hooks.server.ts
// or update the reference to 'src/hooks.server.js'
Defensive patterns

Strategy: validation

Validate before calling

// check referenced hook files exist before build
import { existsSync } from 'node:fs';
for (const f of ['src/hooks.server.ts', 'src/hooks.server.js', 'src/hooks.client.ts']) {
  console.log(f, existsSync(f));
}

Type guard

const isValidEntry = (p) => typeof p === 'string' && existsSync(resolve(p));

Prevention

When it happens

Trigger: svelte.config.js or generated references point at e.g. `src/hooks.server.ts` while only `src/hooks.server.js` exists (or vice versa), or similarly mismatched `+layout.server` / client hook filenames.

Common situations: Renaming a file between .js and .ts during a TypeScript migration; template docs referencing the other extension; files added to the wrong directory.

Related errors


AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02). Data as JSON: /api/errors/629d2bc5a4702640. Report an issue: GitHub.

Appendix: source

Thrown at packages/kit/src/core/sync/utils.js:84

	}

	str = str.trim();

	return str;
}

/**
 * @param {string} original
 * @param {string} typo The common misspelling to check for
 * @param {string} description What was wrong with the filename
 */
export function check_spelling(original, typo, description) {
	const misspelled = resolve_entry(typo);
	if (!misspelled) return;

	const corrected = path.basename(misspelled).replace(path.basename(typo), path.basename(original));

	console.warn(
		styleText(
			['bold', 'yellow'],
			`${description}. Did you mean ${corrected}?` + ` at ${path.resolve(misspelled)}`
		)
	);
}

View on GitHub (pinned to 03f1687fe6)