Skip to content

Failing to install @react-router/dev using yarn with Node.js version v20.12.2 due to Vite 7 releaseΒ #13876

Open
@alanko0511

Description

@alanko0511

Vite 7 was just released a few hours ago (https://vite.dev/blog/announcing-vite7) and it drops support on Node.js versions < 20.19.

I'm using React Router as a...

framework

Reproduction

  1. Fork this repo: https://github.com/alanko0511/rr7-dev-yarn-version (it's a minimal [email protected] app)
  2. Use Node.js version manager like fnm to switch the Node.js version to 20.12.2
  3. Run yarn install using the classic yarn (v1.22.22)
  4. You should see the following error:
error [email protected]: The engine "node" is incompatible with this module. Expected version "^20.19.0 || >=22.12.0". Got "20.12.2"
error Found incompatible module.

System Info

$ npx envinfo --system --npmPackages '{vite,react-router,@react-router/*}' --binaries --browsers

  System:
    OS: macOS 13.0
    CPU: (12) arm64 Apple M2 Pro
    Memory: 89.42 MB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 20.12.2 - ~/.local/state/fnm_multishells/54581_1750774976394/bin/node
    Yarn: 1.22.22 - /opt/homebrew/bin/yarn
    npm: 10.5.0 - ~/.local/state/fnm_multishells/54581_1750774976394/bin/npm
  Browsers:
    Chrome: 137.0.7151.120
    Safari: 16.1
  npmPackages:
    @react-router/dev: ^7.6.2 => 7.6.2 
    @react-router/fs-routes: ^7.6.2 => 7.6.2 
    @react-router/node: ^7.6.2 => 7.6.2 
    @react-router/serve: ^7.6.2 => 7.6.2 
    react-router: ^7.6.2 => 7.6.2 
    vite: ^6.3.5 => 6.3.5

Used Package Manager

yarn

Expected Behavior

yarn install should be successful.

Actual Behavior

yarn install fails with the following error:

error [email protected]: The engine "node" is incompatible with this module. Expected version "^20.19.0 || >=22.12.0". Got "20.12.2"
error Found incompatible module.

Since I have some environments that require the use of [email protected] and [email protected], I can't easily upgrade these two versions. To get around this, I have to add a resolutions to the package.json:

  "resolutions": {
    "vite": "^6.3.5"
  }

When I switch to [email protected] to have a successful yarn install, then run yarn why vite, it seems that @react-router/dev doesn't strictly lock the version of vite-node, allowing it to install the latest version of vite:

$ yarn why vite
yarn why v1.22.22
[1/4] πŸ€”  Why do we have the module "vite"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] πŸ”  Finding dependency...
[4/4] 🚑  Calculating file sizes...
=> Found "[email protected]"
info Has been hoisted to "vite"
info This module exists because it's specified in "devDependencies".
info Disk size without dependencies: "2.66MB"
info Disk size with unique dependencies: "6.24MB"
info Disk size with transitive dependencies: "6.6MB"
info Number of shared dependencies: 8
=> Found "vite-node#[email protected]"
info This module exists because "@react-router#dev#vite-node" depends on it.
info Disk size without dependencies: "2.31MB"
info Disk size with unique dependencies: "5.89MB"
info Disk size with transitive dependencies: "6.25MB"
info Number of shared dependencies: 8
✨  Done in 0.10s.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions