@@ -10,12 +10,35 @@ import * as viteModuleRunner from 'vite/module-runner'
1010import { VitestMocker } from './moduleMocker'
1111import { VitestTransport } from './moduleTransport'
1212
13- // eslint-disable-next-line ts/ban-ts-comment
14- // @ts -ignore available since Vite 7.1 https://github.com/vitejs/vite/pull/20260
1513export type CreateImportMeta = NonNullable < viteModuleRunner . ModuleRunnerOptions [ 'createImportMeta' ] >
16- // eslint-disable-next-line ts/ban-ts-comment
17- // @ts -ignore
18- export const createNodeImportMeta : CreateImportMeta = viteModuleRunner . createNodeImportMeta
14+ export const createNodeImportMeta : CreateImportMeta = ( modulePath : string ) => {
15+ if ( ! viteModuleRunner . createDefaultImportMeta ) {
16+ throw new Error ( `createNodeImportMeta is not supported in this version of Vite.` )
17+ }
18+
19+ const defaultMeta = viteModuleRunner . createDefaultImportMeta ( modulePath )
20+ const href = defaultMeta . url
21+
22+ const importMetaResolver = createImportMetaResolver ( )
23+
24+ return {
25+ ...defaultMeta ,
26+ main : false ,
27+ resolve ( id : string , parent ?: string ) {
28+ const resolver = importMetaResolver ?? defaultMeta . resolve
29+ return resolver ( id , parent ?? href )
30+ } ,
31+ }
32+ }
33+
34+ function createImportMetaResolver ( ) {
35+ if ( ! import . meta. resolve ) {
36+ return
37+ }
38+
39+ return ( specifier : string , importer : string ) =>
40+ import . meta. resolve ( specifier , importer )
41+ }
1942
2043// @ts -expect-error overriding private method
2144export class VitestModuleRunner extends viteModuleRunner . ModuleRunner {
@@ -32,8 +55,6 @@ export class VitestModuleRunner extends viteModuleRunner.ModuleRunner {
3255 hmr : false ,
3356 evaluatedModules,
3457 sourcemapInterceptor : 'prepareStackTrace' ,
35- // eslint-disable-next-line ts/ban-ts-comment
36- // @ts -ignore
3758 createImportMeta : vitestOptions . createImportMeta ,
3859 } ,
3960 options . evaluator ,
@@ -68,10 +89,7 @@ export class VitestModuleRunner extends viteModuleRunner.ModuleRunner {
6889
6990 public async import ( rawId : string ) : Promise < any > {
7091 const resolved = await this . vitestOptions . transport . resolveId ( rawId )
71- if ( ! resolved ) {
72- return super . import ( rawId )
73- }
74- return super . import ( resolved . url )
92+ return super . import ( resolved ? resolved . url : rawId )
7593 }
7694
7795 public async fetchModule ( url : string , importer ?: string ) : Promise < EvaluatedModuleNode > {
0 commit comments