diff --git a/packages/vite-node/src/utils.ts b/packages/vite-node/src/utils.ts index 8629a6db4a58..1388c5fda9a5 100644 --- a/packages/vite-node/src/utils.ts +++ b/packages/vite-node/src/utils.ts @@ -68,7 +68,13 @@ export function isInternalRequest(id: string): boolean { return internalRequestRegexp.test(id) } -const prefixedBuiltins = new Set(['node:test']) +// https://nodejs.org/api/modules.html#built-in-modules-with-mandatory-node-prefix +const prefixedBuiltins = new Set([ + 'node:sea', + 'node:sqlite', + 'node:test', + 'node:test/reporters', +]) const builtins = new Set([ ...builtinModules, diff --git a/test/config/test/node-sqlite.test.ts b/test/config/test/node-sqlite.test.ts new file mode 100644 index 000000000000..a9035a5c9d4b --- /dev/null +++ b/test/config/test/node-sqlite.test.ts @@ -0,0 +1,29 @@ +import { expect, test } from 'vitest' +import { runInlineTests, ts } from '../../test-utils' + +const nodeMajor = Number(process.version.slice(1).split('.')[0]) + +test.runIf(nodeMajor >= 22)('import node:sqlite', async () => { + const { vitest, results } = await runInlineTests({ + 'vitest.config.ts': { + test: { + pool: 'forks', + poolOptions: { + forks: { + execArgv: ['--experimental-sqlite'], + }, + }, + }, + }, + 'basic.test.ts': ts` + import { test, expect } from 'vitest' + import sqlite from 'node:sqlite' + + test('sqlite', () => { + console.log(sqlite) + }) + `, + }) + expect(vitest.stderr).toBe('') + expect(results[0].ok()).toBe(true) +})