Skip to content

Vitest no longer correctly resolves NodeJS Builtin Modules #8802

@leeyi45

Description

@leeyi45

Describe the bug

Even when using the Node environment, Vitest doesn't correctly resolve built in modules:

import fs from 'fs/promises';

vi.spyOn(fs, 'readFile');

throws an error because fs is undefined.

const fs = await vi.importActual('fs/promises');
console.log(fs);

prints [Module: null prototype] {}.

This isn't limited to fs: the issue is also present when using other Node built in modules like path.

@sheremet-va noted that Vitest still resolves node:fs/promises correctly, so a temporary fix has been:

resolve: {
  alias: {
    'fs/promises': 'node:fs/promises'
  }
}

Reproduction

Minimal Reproduction

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 20.19.1 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.8.2 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    @vitest/ui: latest => 4.0.1 
    vite: latest => 7.1.11 
    vitest: latest => 4.0.1

Used Package Manager

npm

Validations

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions