solid start alpha running with deno#2153
Conversation
The manifest plugin's resolveId hook did not intercept virtual module URLs
starting with /@manifest/. When the dev SSR manifest performed a dynamic
import like:
import('/@manifest/ssr/1745693440524/assets?id=./src/entry-client.tsx')
Vite called resolveId, which returned undefined for these paths. Vite then
fell through to its default filesystem resolver, stripped the query string,
and attempted to load a non-existent file at:
/@manifest/ssr/1745693440524/assets
The load hook was correctly implemented to handle /@manifest IDs (it parsed
the query string, walked the module graph for CSS dependencies, and returned
inline style tags), but it was never reached because resolveId failed first.
Fix: add an early return in resolveId for any ID starting with /@manifest/,
allowing the virtual URL to pass through to the load hook unchanged.
…hang The load hook for the "solid-start:server-fn-manifest" virtual module used a Debouncer that delayed resolution by 1 second (setTimeout). During production builds (Rollup), this timer never fires before Rollup exits, causing: Unexpected early exit. This happens when Promises returned by plugins cannot resolve. Unfinished hook action(s) on exit: (solid-start:server-functions/preload) load "solid-start:server-fn-manifest" The Debouncer was designed for dev-mode HMR batching — deferring regeneration of the manifest when multiple files change in quick succession. However, the compiler plugin already handles invalidation via invalidateModules(), which re-triggers the load hook when server function files change. The Debouncer was therefore redundant even in dev mode. Fix: return the generated import statements synchronously from the load hook. The manifest set is already populated by the time load runs (the compiler plugin's transform hook runs first during both dev and build), so there is no need to wait.
|
✅ Deploy Preview for solid-start-landing-page ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
commit: |
| devServer = server; | ||
| }, | ||
| async resolveId(id) { | ||
| if (id.startsWith("/@manifest/")) return id; |
There was a problem hiding this comment.
this seems like it would have issues?
|
Things have improved since. Where deno 2.6.3 breaks, deno 2.9.3 works much better. If you still experience issues with out latest pre-release SolidStart 2.0.0-beta.6 or newer, and latest deno, and a fresh template that use nitrov3, then feel free to open a new ticket. |
When trying to get solid start alpha running with deno, I encountered a few problems. This is an informational PR of what I had to change to get things running. I can't guarantee nothing has been broken, (especially with 3efff0c) which is why I'm calling it an informational PR.
There are 3 commits (all very small), and each commit has a thorough message to explain the change.