From a812333cee8bfa9a80365b074f64b708a1070be3 Mon Sep 17 00:00:00 2001 From: yamachi4416 Date: Sat, 21 Mar 2026 07:31:19 +0900 Subject: [PATCH 1/2] fix(vitest-environment): avoid `vitest/environments` import warning in vitest4.1 --- src/environments/vitest/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/environments/vitest/index.ts b/src/environments/vitest/index.ts index 7e229d14f..49a0e1f68 100644 --- a/src/environments/vitest/index.ts +++ b/src/environments/vitest/index.ts @@ -1,8 +1,8 @@ import type { Environment } from 'vitest/environments' +import { resolveModulePath } from 'exsolve' import { indexedDB } from 'fake-indexeddb' import { joinURL } from 'ufo' import defu from 'defu' -import { populateGlobal } from 'vitest/environments' import { setupWindow } from '../../runtime/shared/environment' import type { NuxtBuiltinEnvironment } from './types' @@ -18,6 +18,8 @@ export default { name: 'nuxt', viteEnvironment: 'client', async setup(global, environmentOptions) { + const { populateGlobal } = await importVitestEnvironments() + const url = joinURL( environmentOptions.nuxt?.url ?? 'http://localhost:3000', environmentOptions.nuxtRuntimeConfig?.app?.baseURL || '/', @@ -65,6 +67,11 @@ export default { }, } +async function importVitestEnvironments() { + const pkg = resolveModulePath('vitest/runtime', { try: true }) ? 'vitest/runtime' : 'vitest/environments' + return await import(pkg) as typeof import('vitest/environments') +} + class IntersectionObserver { observe() {} unobserve() {} From 8c8338f77d399a8a354ceeeafc323034d4e0fb3a Mon Sep 17 00:00:00 2001 From: yamachi4416 Date: Mon, 23 Mar 2026 21:25:46 +0900 Subject: [PATCH 2/2] add note future vitest 4.0.x support drop --- src/environments/vitest/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/environments/vitest/index.ts b/src/environments/vitest/index.ts index 49a0e1f68..d42ac3e71 100644 --- a/src/environments/vitest/index.ts +++ b/src/environments/vitest/index.ts @@ -67,6 +67,7 @@ export default { }, } +// This can be removed when dropping support for vitest 4.0.x (We can static import from 'vitest/runtime') async function importVitestEnvironments() { const pkg = resolveModulePath('vitest/runtime', { try: true }) ? 'vitest/runtime' : 'vitest/environments' return await import(pkg) as typeof import('vitest/environments')