diff --git a/packages/vitest/src/node/environments/serverRunner.ts b/packages/vitest/src/node/environments/serverRunner.ts index 68774eef7b47..780def006cd7 100644 --- a/packages/vitest/src/node/environments/serverRunner.ts +++ b/packages/vitest/src/node/environments/serverRunner.ts @@ -1,13 +1,10 @@ import type { DevEnvironment } from 'vite' import type { ResolvedConfig } from '../types/config' import type { VitestFetchFunction } from './fetchModule' -import { builtinModules } from 'node:module' import { VitestModuleEvaluator } from '#module-evaluator' import { ModuleRunner } from 'vite/module-runner' import { normalizeResolvedIdToUrl } from './normalizeUrl' -const nodeBuiltins = builtinModules.filter(id => !id.includes(':')) - export class ServerModuleRunner extends ModuleRunner { constructor( private environment: DevEnvironment, @@ -24,7 +21,7 @@ export class ServerModuleRunner extends ModuleRunner { } const { name, data } = event.data if (name === 'getBuiltins') { - return { result: [...nodeBuiltins, /^node:/] } + return await environment.hot.handleInvoke(event) } if (name !== 'fetchModule') { return { error: new Error(`Unknown method: ${name}. Expected "fetchModule".`) } diff --git a/packages/vitest/src/runtime/moduleRunner/moduleTransport.ts b/packages/vitest/src/runtime/moduleRunner/moduleTransport.ts index e796049b5469..90fe7dc728b8 100644 --- a/packages/vitest/src/runtime/moduleRunner/moduleTransport.ts +++ b/packages/vitest/src/runtime/moduleRunner/moduleTransport.ts @@ -1,14 +1,11 @@ import type { FetchFunction, ModuleRunnerTransport } from 'vite/module-runner' import type { ResolveFunctionResult } from '../../types/general' -import { builtinModules } from 'node:module' export interface VitestTransportOptions { fetchModule: FetchFunction resolveId: (id: string, importer?: string) => Promise } -const nodeBuiltins = builtinModules.filter(id => !id.includes(':')) - export class VitestTransport implements ModuleRunnerTransport { constructor(private options: VitestTransportOptions) {} @@ -21,7 +18,9 @@ export class VitestTransport implements ModuleRunnerTransport { } const { name, data } = event.data if (name === 'getBuiltins') { - return { result: [...nodeBuiltins, /^node:/] } + // we return an empty array here to avoid client-side builtin check, + // as we need builtins to go through `fetchModule` + return { result: [] } } if (name !== 'fetchModule') { return { error: new Error(`Unknown method: ${name}. Expected "fetchModule".`) }