sveltejs/kit · error · Error
@sveltejs/enhanced-img requires @sveltejs/vite-plugin-svelte
Error message
@sveltejs/enhanced-img requires @sveltejs/vite-plugin-svelte 6 or higher to be installed
What it means
@sveltejs/enhanced-img builds on top of @sveltejs/vite-plugin-svelte. At Vite config resolution time the plugin looks for the `vite-plugin-svelte:config` plugin; if it is absent, the installed/loaded vite-plugin-svelte is too old (or not loaded), so enhanced-img refuses to run.
Source
Thrown at packages/enhanced-img/src/vite-plugin.js:31
/**
* Creates the Svelte image plugin.
* @param {import('vite').Plugin<void>} imagetools_plugin
* @returns {import('vite').Plugin<void>}
*/
export function image_plugin(imagetools_plugin) {
/** @type {import('vite').ResolvedConfig} */
let vite_config;
const name = 'vite-plugin-enhanced-img-markup';
/** @type {import('vite').Plugin<void>} */
const plugin = {
name,
configResolved(config) {
vite_config = config;
const svelteConfigPlugin = config.plugins.find((p) => p.name === 'vite-plugin-svelte:config');
if (!svelteConfigPlugin) {
throw new Error(
'@sveltejs/enhanced-img requires @sveltejs/vite-plugin-svelte 6 or higher to be installed'
);
}
const api = svelteConfigPlugin.api;
const id_filter = api.filter.id;
// @ts-expect-error plugin.transform is defined below before configResolved is called
plugin.transform.filter.id = {
include: id_filter.include,
// Exclude modules with query parameters (e.g. ?raw, ?url) — these are not
// Svelte components to compile, so parsing them as markup would fail.
exclude: [...id_filter.exclude, /\?/]
};
},
transform: {
order: 'pre', // puts it before vite-plugin-svelte:compile
filter: {
code: /<enhanced:img/ // code filter must match in addition to the id filter set in configResolved hook above
},View on GitHub (pinned to 03f1687fe6)
Solutions
- Install/upgrade @sveltejs/vite-plugin-svelte to version 6 or higher: `pnpm add -D @sveltejs/vite-plugin-svelte@^6`
- Run your package manager's dedupe to remove stale older copies from node_modules
- Verify the SvelteKit/Vite versions are compatible (SvelteKit 2 + Vite 6/7 era) and reinstall dependencies
Example fix
// before
"devDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.0" }
// after
"devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.0.0" } Defensive patterns
Strategy: validation
Validate before calling
import { version } from '@sveltejs/vite-plugin-svelte/package.json' with { type: 'json' };
// or check before dev/build:
const pkg = require('@sveltejs/vite-plugin-svelte/package.json');
if (parseInt(pkg.version) < 6) throw new Error('enhanced-img needs vite-plugin-svelte >= 6'); Try / catch
try {
await vite.build(config);
} catch (e) {
if (String(e.message).includes('vite-plugin-svelte 6')) {
console.error('Upgrade @sveltejs/vite-plugin-svelte to ^6');
}
throw e;
} Prevention
- Keep @sveltejs/vite-plugin-svelte in devDependencies at ^6
- Run `pnpm dedupe` after upgrades
- Align SvelteKit, Vite, and vite-plugin-svelte versions per the compatibility table
When it happens
Trigger: `configResolved` runs during `vite dev`/`vite build` and `config.plugins` contains no plugin named 'vite-plugin-svelte:config', i.e. @sveltejs/vite-plugin-svelte < 6 is installed or not included in the Vite config.
Common situations: Dependency resolution left an older vite-plugin-svelte in node_modules, the plugin was forgotten in vite.config, or a package manager hoisted an incompatible version (e.g. via SvelteKit version mismatch).
Related errors
- Could not locate ${file_path}. Please move it to be located
- Could not locate ${file_path}. See https://vitejs.dev/guide/
- Expected to find metadata for remote file ${id}
- ${source.errors[0].message}
- ${message}. Since you're using @sveltejs/adapter-auto, Svelt
AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02).
Data as JSON: /api/errors/15c8ecab5036a282.
Report an issue: GitHub.