prism-svelte icon indicating copy to clipboard operation
prism-svelte copied to clipboard

Usage With Svelte Kit

Open stolinski opened this issue 4 years ago • 15 comments

I'm seeing

TypeError: Line must be greater than or equal to 1, got -1
    at BasicSourceMapConsumer.SourceMapConsumer_findMapping [as _findMapping] (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:68868:13)
    at BasicSourceMapConsumer.SourceMapConsumer_originalPositionFor [as originalPositionFor] (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:68937:22)
    at /Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69883:34
    at String.replace (<anonymous>)
    at /Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69873:21
    at Array.map (<anonymous>)
    at ssrRewriteStacktrace (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69872:10)
    at Object.ssrFixStacktrace (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:70196:27)
    at Object.handle_error (file:///Users/scotttolinski/Sites/levelup/svelteui/node_modules/@sveltejs/kit/dist/chunks/index.js:3353:19)
    at respond$1 (file:///Users/scotttolinski/Sites/levelup/svelteui/node_modules/@sveltejs/kit/dist/ssr.js:998:11)
    ```
in the ui and  on the server this



5:08:54 PM [vite] Error when evaluating SSR module /node_modules/prism-svelte/index.js: ReferenceError: Prism is not defined at /node_modules/prism-svelte/index.js:3:1 at instantiateModule (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69982:166) Prism is not defined ReferenceError: Prism is not defined at /node_modules/prism-svelte/index.js:1:1 at instantiateModule (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69982:166) Line must be greater than or equal to 1, got -1 TypeError: Line must be greater than or equal to 1, got -1 at BasicSourceMapConsumer.SourceMapConsumer_findMapping [as _findMapping] (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:68868:13) at BasicSourceMapConsumer.SourceMapConsumer_originalPositionFor [as originalPositionFor] (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:68937:22) at /Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69883:34 at String.replace () at /Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69873:21 at Array.map () at ssrRewriteStacktrace (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:69872:10) at Object.ssrFixStacktrace (/Users/scotttolinski/Sites/levelup/svelteui/node_modules/vite/dist/node/chunks/dep-0ed4fbc0.js:70196:27) at Object.handle_error (file:///Users/scotttolinski/Sites/levelup/svelteui/node_modules/@sveltejs/kit/dist/chunks/index.js:3353:19) at respond$1 (file:///Users/scotttolinski/Sites/levelup/svelteui/node_modules/@sveltejs/kit/dist/ssr.js:998:11)

stolinski avatar Jul 06 '21 23:07 stolinski

Not sure why the formatting is off here, I can provide a reproduction, but it's basically just tossing the example code on to a server rendered page and refreshing.

stolinski avatar Jul 06 '21 23:07 stolinski

Weird, I'll take a look at this.

Do you know what specifically was being highlighted?

pngwn avatar Jul 09 '21 22:07 pngwn

It was mad at the import of 'prism-svelte'. Commenting that out and leaving just prism has no issues.

stolinski avatar Jul 09 '21 22:07 stolinski

Ah right. I'll take a look.

pngwn avatar Jul 09 '21 22:07 pngwn

I think this is specific to dev mode. I can reproduce in dev but the prod build seems to work fine. I think this is something to do with the way handles certain dependencies. Going to see if I can find a solution.

pngwn avatar Jul 10 '21 11:07 pngwn

This isn't specific to this package, it also causes Prism to fail in my tests. If I remove the import for prism-svelte and just try to highlight with Prism i get:

Cannot read property 'highlight' of undefined

I'm guessing this is because Prism is shipped as UMD and attaches itself to the global namespace. This clearly doesn't play nicely with how Vite is handling things in dev mode. WIll keep digging.

pngwn avatar Jul 10 '21 11:07 pngwn

The reason prism-svelte will throw an error even earlier than that is due to how new syntaxes are added to Prism, by modifying that global namepsace (which in this instance, does not exist).

pngwn avatar Jul 10 '21 11:07 pngwn

repro: https://github.com/pngwn/kit-prism-ssr-bug

pngwn avatar Jul 10 '21 12:07 pngwn

another repro, with only vite: https://github.com/pngwn/vite-prism-ssr-bug

pngwn avatar Jul 10 '21 12:07 pngwn

I'm having trouble as well while trying to migrate svelte.dev to SvelteKit. It seems not to like Prism global variable:

ReferenceError: Prism is not defined
    at /node_modules/prism-svelte/index.js:1:1

Any idea what I might need to do to define it?

My code is here: https://github.com/benmccann/svelte/tree/sveltekit. It may not run until https://github.com/sveltejs/svelte-repl/pull/170 is merged though

benmccann avatar Jul 23 '21 22:07 benmccann

This is a vite issue as far as I can tell. I have reproed only with vite and Prism. Only happens during SSR, so something to do with vite, SSR and the dev server. Only way I can make it go is by using global.Prism ton instantiate but that will break very quickly due to how prism adds grammars.

pngwn avatar Jul 23 '21 23:07 pngwn

Tried to repro this today and it works ootb for me. From the error logs, it looks like the packages weren't prebundled, but this shouldn't be the case now as SvelteKit enabled prebundling and vite-plugin-svelte handles them properly.

bluwy avatar Sep 25 '21 17:09 bluwy

@stolinski Is this bug still present or did the vite changes mentioned above fix this issue?

pngwn avatar Feb 19 '22 11:02 pngwn

I haven't had any issues with the latest versions

benmccann avatar Feb 19 '22 13:02 benmccann

I just faced the same issue and found that I could fix it by adding prism-svelte to the noExternal deps in vite.

// svelte.config.js
import preprocess from 'svelte-preprocess'
import adapter from '@sveltejs/adapter-static'

export default {
  preprocess: [preprocess()],
  kit: {
    adapter: adapter(),
    prerender: {
      default: true,
    },
    vite: {
      ssr: {
        noExternal: ['prismjs', 'prism-svelte'],
      },
    },
  },
}

pelletier197 avatar Apr 03 '22 16:04 pelletier197