tacoT
Denoβ€’11mo agoβ€’
3 replies
taco

Vite + Codemirror in SvelteKit 4 broken due to @codemirror/state being loaded twice

I am trying to migrate the SvelteKit project from Node to Deno, and this issue is preventing me from switching over.

The npm modules installed alongside SvelteKit 4 needed to reproduce are codemirror @codemirror/lang-json

I would imagine that being able to change the .deno directory to somewhere outside of
node_modules
would fix this.

This is the error received in the browser on load:
Error: Unrecognized extension value in extension set ([object Object]). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.

The 2 instances being loaded in the browser are at:
node_modules/@codemirror/state/dist/index.js
node_modules/.deno/@codemirror+state@6.5.2/node_modules/@codemirror/state/dist

This is running in the denoland/deno:alpine docker container.
FROM denoland/deno:alpine as dev

COPY ./lib /app/lib

COPY ./web /app/web

WORKDIR /app/web

RUN deno install

EXPOSE 5173

CMD ["deno", "run", "-A", "npm:vite", "dev", "--host"]


Deno version (in the container):
deno 2.2.2 (stable, release, x86_64-unknown-linux-gnu)
v8 13.4.114.9-rusty
typescript 5.7.3


I have tried to deny .deno in vite.config.js in server/fs/deny. Neither denying node_modules/.deno or denying .deno work.
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vitest/config';

export default defineConfig({
  plugins: [sveltekit()],
  test: {
    include: ['src/**/*.{test,spec}.{js,ts}'],
  },
  server: {
    allowedHosts: ['mydomain.com'],
    fs: {
      deny: '.deno'
    }
  },
  
});
Was this page helpful?