Skip to content
Back to skills

Node Winget Collision

ASecurity

Node.js installed via winget collides with nvm — path priority, shim conflicts, resolution steps

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
ai-agentsgoshellnodenodejsdebugging

Works with

  • terminal

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add fabioc-aloha/Alex_Skill_Mall --skill node-winget-collision --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Node Winget Collision?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Node Winget Collision
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fabioc-aloha-node-winget-collision/badge)](https://www.skillsdirectory.com/skills/fabioc-aloha-node-winget-collision)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: node-winget-collision
description: "Node.js installed via winget collides with nvm — path priority, shim conflicts, resolution steps"
lastReviewed: 2026-04-30
---

# Node.js Winget Collision

**Category**: Windows / Node.js
**Time Saved**: 30-60 minutes debugging
**Battle-tested**: Yes — occurred during Node.js upgrade

---

## The Problem

You install Node.js 22 via winget. It works. Later you uninstall the old Node.js 20 version. Suddenly `node --version` gives an error or shows the wrong version. Your terminal can't find node at all.

## Why It Happens

Multiple winget Node.js packages share the same installation directory:

```
OpenJS.NodeJS.22    →  C:\Program Files\nodejs\
OpenJS.NodeJS.LTS   →  C:\Program Files\nodejs\
OpenJS.NodeJS       →  C:\Program Files\nodejs\
```

When you uninstall ANY of them, winget removes the shared binaries — even if another package is still "installed."

## The Rule

**When upgrading Node.js via winget: Install new first, verify, THEN uninstall old.**

## Safe Upgrade Procedure

### Step 1: Install New Version First

```powershell
# Install Node 24 (don't uninstall old yet!)
winget install OpenJS.NodeJS --version 22.x.x

# Or use the versioned package
winget install OpenJS.NodeJS.22
```

### Step 2: Verify Installation

```powershell
# Close and reopen terminal, then:
node --version
# Should show v22.x.x

npm --version
# Should work
```

### Step 3: Only Then Uninstall Old

```powershell
# NOW it's safe to remove old version
winget uninstall OpenJS.NodeJS.LTS

# Or uninstall by exact ID from winget list
winget list nodejs  # Find the exact ID
winget uninstall OpenJS.NodeJS --version 20.x.x
```

### Step 4: Verify Again

```powershell
node --version
# Still v22.x.x — good!
```

## If You Already Broke It

### Recovery Steps

```powershell
# 1. Check what winget thinks is installed
winget list nodejs

# 2. Uninstall all Node entries
winget uninstall OpenJS.NodeJS
winget uninstall OpenJS.NodeJS.LTS
winget uninstall OpenJS.NodeJS.22

# 3. Clean up PATH (if needed)
# Remove stale C:\Program Files\nodejs entries

# 4. Fresh install
winget install OpenJS.NodeJS.22

# 5. Restart terminal and verify
node --version
```

### Manual PATH Cleanup

```powershell
# Check current PATH
$env:PATH -split ';' | Where-Object { $_ -like '*nodejs*' }

# If it shows paths that don't exist:
# System Properties → Environment Variables → Path → Remove bad entries
```

## Alternative: Use NVM for Windows

Avoid the problem entirely with Node Version Manager:

```powershell
# Install nvm-windows
winget install CoreyButler.NVMforWindows

# Then manage versions safely
nvm install 22
nvm install 20
nvm use 22
nvm list
```

## Package ID Reference

| Package ID | Description |
|------------|-------------|
| `OpenJS.NodeJS` | Latest stable |
| `OpenJS.NodeJS.LTS` | Latest LTS |
| `OpenJS.NodeJS.22` | Specific v22 |
| `OpenJS.NodeJS.20` | Specific v20 |
| `OpenJS.NodeJS.18` | Specific v18 |

## Verification Checklist

- [ ] Never uninstall old Node before installing new
- [ ] Verify `node --version` after install
- [ ] Check `npm --version` works
- [ ] Only then uninstall old version
- [ ] Consider nvm-windows for version management

## Common Symptoms

- "'node' is not recognized" after uninstalling old version
- Wrong Node version showing after upgrade
- npm commands fail after Node.js changes
- PATH contains nonexistent nodejs folder

## Related Skills

- `pat-expiration-silent` — Silent failures in Windows tools

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…