|
1 | | -import type { DevEnvironment, Plugin } from "vite"; |
| 1 | +import { |
| 2 | + type DevEnvironment, |
| 3 | + isRunnableDevEnvironment, |
| 4 | + type Plugin, |
| 5 | +} from "vite"; |
2 | 6 | import * as path from "@std/path"; |
3 | 7 | import { ASSET_CACHE_BUST_KEY } from "fresh/internal"; |
4 | 8 | import { createRequest, sendResponse } from "@remix-run/node-fetch-server"; |
5 | 9 | import { hashCode } from "../shared.ts"; |
6 | 10 |
|
| 11 | +interface FetchHandler { |
| 12 | + default: { |
| 13 | + fetch: (req: Request) => Promise<Response>; |
| 14 | + }; |
| 15 | +} |
| 16 | + |
7 | 17 | export function devServer(): Plugin[] { |
8 | 18 | let publicDir = ""; |
9 | 19 | return [ |
@@ -69,16 +79,15 @@ export function devServer(): Plugin[] { |
69 | 79 | // Ignore |
70 | 80 | } |
71 | 81 |
|
| 82 | + if (!isRunnableDevEnvironment(server.environments.ssr)) return; |
| 83 | + |
72 | 84 | try { |
73 | | - const mod = await server.ssrLoadModule("fresh:server_entry"); |
74 | | - const req = createRequest(nodeReq, nodeRes); |
75 | | - mod.setErrorInterceptor((err: unknown) => { |
76 | | - if (err instanceof Error) { |
77 | | - server.ssrFixStacktrace(err); |
78 | | - } |
79 | | - }); |
| 85 | + const mod = await server.environments.ssr.runner.import<unknown>( |
| 86 | + "fresh:server_entry", |
| 87 | + ) as FetchHandler; |
80 | 88 |
|
81 | | - const res = (await mod.default.fetch(req)) as Response; |
| 89 | + const req = createRequest(nodeReq, nodeRes); |
| 90 | + const res = await mod.default.fetch(req); |
82 | 91 |
|
83 | 92 | // Collect css eagerly to avoid FOUC. This is a workaround for |
84 | 93 | // Vite not supporting css natively. It's a bit hacky, but |
@@ -107,9 +116,6 @@ export function devServer(): Plugin[] { |
107 | 116 |
|
108 | 117 | await sendResponse(nodeRes, res); |
109 | 118 | } catch (err) { |
110 | | - if (err instanceof Error) { |
111 | | - server.ssrFixStacktrace(err); |
112 | | - } |
113 | 119 | return next(err); |
114 | 120 | } |
115 | 121 | }); |
|
0 commit comments