@@ -49,7 +49,6 @@ import {
4949} from "./config" ;
5050import { ssrExternals } from "./ssr-externals" ;
5151import * as WithProps from "./with-props" ;
52- import * as ViteNode from "./vite-node" ;
5352
5453export async function resolveViteConfig ( {
5554 configFile,
@@ -435,28 +434,22 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
435434 let viteConfig : Vite . ResolvedConfig | undefined ;
436435 let cssModulesManifest : Record < string , string > = { } ;
437436 let viteChildCompiler : Vite . ViteDevServer | null = null ;
438- let routesViteNodeContext : ViteNode . Context | null = null ;
437+ let reactRouterConfigLoader : Awaited < ReturnType < typeof createConfigLoader > > ;
438+ let logger : Vite . Logger ;
439+ let firstLoad = true ;
439440
440441 // This is initialized by `updatePluginContext` during Vite's `config`
441442 // hook, so most of the code can assume this defined without null check.
442443 // During dev, `updatePluginContext` is called again on every config file
443444 // change or route file addition/removal.
444445 let ctx : ReactRouterPluginContext ;
445446
446- let reactRouterConfigLoader : Awaited < ReturnType < typeof createConfigLoader > > ;
447-
448- let logger : Vite . Logger ;
449-
450- let firstLoad = true ;
451-
452447 /** Mutates `ctx` as a side-effect */
453448 let updatePluginContext = async ( {
454449 routeConfigChanged = false ,
455450 } : {
456451 routeConfigChanged ?: boolean ;
457452 } = { } ) : Promise < void > => {
458- invariant ( routesViteNodeContext ) ;
459-
460453 let reactRouterConfig : ResolvedReactRouterConfig ;
461454 let reactRouterConfigResult = await reactRouterConfigLoader . getConfig ( ) ;
462455
@@ -476,6 +469,23 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
476469 } ) ;
477470
478471 let publicPath = resolvePublicPath ( viteUserConfig ) ;
472+
473+ if (
474+ reactRouterConfig . basename !== "/" &&
475+ viteCommand === "serve" &&
476+ ! viteUserConfig . server ?. middlewareMode &&
477+ ! reactRouterConfig . basename . startsWith ( publicPath )
478+ ) {
479+ logger . error (
480+ colors . red (
481+ "When using the React Router `basename` and the Vite `base` config, " +
482+ "the `basename` config must begin with `base` for the default " +
483+ "Vite dev server."
484+ )
485+ ) ;
486+ process . exit ( 1 ) ;
487+ }
488+
479489 let viteManifestEnabled = viteUserConfig . build ?. manifest === true ;
480490
481491 let ssrBuildCtx : ReactRouterPluginSsrBuildContext =
@@ -772,17 +782,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
772782 command : viteCommand === "serve" ? "dev" : "build" ,
773783 } ) ;
774784
775- routesViteNodeContext = await ViteNode . createContext ( {
776- root : viteUserConfig . root ,
777- mode : viteConfigEnv . mode ,
778- server : {
779- watch : viteCommand === "build" ? null : undefined ,
780- } ,
781- ssr : {
782- external : ssrExternals ,
783- } ,
784- } ) ;
785-
786785 await updatePluginContext ( ) ;
787786
788787 Object . assign (
@@ -1243,7 +1242,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
12431242 } ,
12441243 async buildEnd ( ) {
12451244 await viteChildCompiler ?. close ( ) ;
1246- await routesViteNodeContext ?. devServer ?. close ( ) ;
12471245 await reactRouterConfigLoader . close ( ) ;
12481246 } ,
12491247 } ,
0 commit comments