1- import type { FetchFunctionOptions , FetchResult } from 'vite/module-runner'
21import type { FSWatcher } from 'dep-types/chokidar'
32import colors from 'picocolors'
3+ import type { FetchFunctionOptions , FetchResult } from 'vite/module-runner'
44import {
55 BaseEnvironment ,
66 getDefaultResolvedEnvironmentOptions ,
@@ -45,6 +45,8 @@ export interface DevEnvironmentContext {
4545 inlineSourceMap ?: boolean
4646 }
4747 depsOptimizer ?: DepsOptimizer
48+ /** @internal used for client environment */
49+ disableFetchModule ?: boolean
4850}
4951
5052export class DevEnvironment extends BaseEnvironment {
@@ -56,6 +58,10 @@ export class DevEnvironment extends BaseEnvironment {
5658 * @internal
5759 */
5860 _remoteRunnerOptions : DevEnvironmentContext [ 'remoteRunner' ]
61+ /**
62+ * @internal
63+ */
64+ _skipFsCheck : boolean
5965
6066 get pluginContainer ( ) : EnvironmentPluginContainer {
6167 if ( ! this . _pluginContainer )
@@ -121,6 +127,11 @@ export class DevEnvironment extends BaseEnvironment {
121127 this . _crawlEndFinder = setupOnCrawlEnd ( )
122128
123129 this . _remoteRunnerOptions = context . remoteRunner ?? { }
130+ this . _skipFsCheck = ! ! (
131+ context . transport &&
132+ ! ( isWebSocketServer in context . transport ) &&
133+ context . transport . skipFsCheck
134+ )
124135
125136 this . hot = context . transport
126137 ? isWebSocketServer in context . transport
@@ -130,6 +141,9 @@ export class DevEnvironment extends BaseEnvironment {
130141
131142 this . hot . setInvokeHandler ( {
132143 fetchModule : ( id , importer , options ) => {
144+ if ( context . disableFetchModule ) {
145+ throw new Error ( 'fetchModule is disabled in this environment' )
146+ }
133147 return this . fetchModule ( id , importer , options )
134148 } ,
135149 } )
@@ -210,12 +224,12 @@ export class DevEnvironment extends BaseEnvironment {
210224 }
211225
212226 transformRequest ( url : string ) : Promise < TransformResult | null > {
213- return transformRequest ( this , url )
227+ return transformRequest ( this , url , { skipFsCheck : this . _skipFsCheck } )
214228 }
215229
216230 async warmupRequest ( url : string ) : Promise < void > {
217231 try {
218- await this . transformRequest ( url )
232+ await transformRequest ( this , url , { skipFsCheck : true } )
219233 } catch ( e ) {
220234 if (
221235 e ?. code === ERR_OUTDATED_OPTIMIZED_DEP ||
0 commit comments