Skip to content

devtools-kit 0.3.x pins [email protected] with stale nostics@^0.2.0, breaking Nuxt 4.5 prerender (defineProdDiagnostics missing) #445

Description

@seyken971

Describe the bug

@vitejs/[email protected] (latest of that line: 0.3.4) depends on devframe@^0.5.4, and [email protected] still declares nostics@^0.2.0. Every other package in a modern Nuxt tree ([email protected], @nuxt/kit, @nuxt/schema, vue-router, and @vitejs/devtools-kit itself) requires nostics@^1.1.4.

[email protected] and [email protected] have completely different APIs, so whichever copy npm hoists to the root of node_modules breaks the other consumer. In our case a conservative lockfile update (Dependabot bumping nuxt 4.4.8 → 4.5.0 in place) kept [email protected] hoisted at root, and Nitro's externals resolution picked it up at prerender time:

SyntaxError: The requested module 'node_modules/nostics/dist/index.mjs'
does not provide an export named 'defineProdDiagnostics'

→ every prerendered route returns 500 and nuxt build exits 1.

Failing CI run (public): https://github.com/seyken971/pxlc-nuxt/actions/runs/29714114498

Dependency chain

@nuxtjs/[email protected]
└─ [email protected]
   └─ @unhead/[email protected]        (pins @vitejs/devtools-kit@^0.3.4)
      └─ @vitejs/[email protected]
         ├─ [email protected]          → nostics@^0.2.0   ⚠ stale
         ├─ @devframes/[email protected]    → nostics@^0.2.0   ⚠ stale
         └─ nostics@^1.1.4

[email protected]+ already moved to nostics@^1.1.4, and @vitejs/[email protected]+ already bumped to devframe@^0.6.0 — so the head of the tree is fixed. But there is no [email protected] and no @vitejs/[email protected], so every consumer pinned to the 0.3.x line (notably @unhead/[email protected], i.e. the whole current @nuxtjs/seo → Nuxt ecosystem) keeps re-introducing [email protected] into fresh installs.

Suggested fix

Either of:

  • publish @vitejs/[email protected] bumping devframe/@devframes/hub to a nostics@^1.1.4-compatible release, or
  • publish [email protected] / @devframes/[email protected] with nostics@^1.1.4 (semver-satisfies the existing ^0.5.4 pins, no devtools-kit release needed — happy to file this in devframes/devframe instead if that repo is the better home).

Workaround

Regenerating the lockfile from scratch (rm package-lock.json && npm install) hoists [email protected] to root and nests 0.2.0 under devframe, which unbreaks Nitro. But any conservative/in-place lock update can flip it back.

Environment

  • nuxt 4.5.0, @nuxtjs/seo 5.3.3, npm 11.6.4, Node 24.18.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions