Title: Conflict: dev-config installs nvm4w but TypeScript workload installs Node.js LTS directly · Issue #55 · microsoft/WindowsDeveloperConfig · GitHub
Open Graph Title: Conflict: dev-config installs nvm4w but TypeScript workload installs Node.js LTS directly · Issue #55 · microsoft/WindowsDeveloperConfig
X Title: Conflict: dev-config installs nvm4w but TypeScript workload installs Node.js LTS directly · Issue #55 · microsoft/WindowsDeveloperConfig
Description: Summary The main dev-config.winget installs NVM for Windows (CoreyButler.NVMforWindows), which manages Node.js versions via a symlink at C:\nvm4w\nodejs and adds that to PATH. However, the TypeScript workload (Workloads/typescript/config...
Open Graph Description: Summary The main dev-config.winget installs NVM for Windows (CoreyButler.NVMforWindows), which manages Node.js versions via a symlink at C:\nvm4w\nodejs and adds that to PATH. However, the TypeScri...
X Description: Summary The main dev-config.winget installs NVM for Windows (CoreyButler.NVMforWindows), which manages Node.js versions via a symlink at C:\nvm4w\nodejs and adds that to PATH. However, the TypeScri...
Opengraph URL: https://github.com/microsoft/WindowsDeveloperConfig/issues/55
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Conflict: dev-config installs nvm4w but TypeScript workload installs Node.js LTS directly","articleBody":"## Summary\n\nThe main `dev-config.winget` installs **NVM for Windows** (`CoreyButler.NVMforWindows`), which manages Node.js versions via a symlink at `C:\\nvm4w\\nodejs` and adds that to PATH. However, the **TypeScript workload** (`Workloads/typescript/configuration.winget`) separately installs `OpenJS.NodeJS.LTS` directly via winget, which places Node at `C:\\Program Files\\nodejs`.\n\nThis creates a broken state where:\n1. PATH points to `C:\\nvm4w\\nodejs` (set by nvm4w)\n2. The nvm4w symlink targets a version directory (e.g. `C:\\Users\\\u003cuser\u003e\\AppData\\Local\\nvm\\v24.16.0`) that **does not exist** because Node was installed via the MSI package, not through `nvm install`\n3. `node` and `npm` are not found on PATH despite Node.js being physically installed\n\n## Steps to Reproduce\n\n1. Apply the main `windows-dev-config/dev-config.winget` (installs nvm4w, adds `C:\\nvm4w\\nodejs` to PATH)\n2. Apply `Workloads/typescript/configuration.winget` (installs `OpenJS.NodeJS.LTS` to `C:\\Program Files\\nodejs`)\n3. Open a new terminal\n4. Run `node --version` → **command not found**\n\n## Root Cause\n\nnvm4w owns the PATH entry (`C:\\nvm4w\\nodejs`) and expects Node to be installed via `nvm install \u003cversion\u003e` + `nvm use \u003cversion\u003e`. The direct winget install of `OpenJS.NodeJS.LTS` puts node elsewhere and nvm4w's symlink points to a non-existent directory.\n\n## Suggested Fix\n\n**Option A** — TypeScript workload defers to nvm4w:\nReplace the `OpenJS.NodeJS.LTS` winget package resource with a `RunCommandOnSet` that runs:\n```powershell\nnvm install lts\nnvm use lts\n```\n\n**Option B** — Remove nvm4w from dev-config, let workloads install Node directly:\nRemove `CoreyButler.NVMforWindows` from `dev-config.winget` and ensure `C:\\Program Files\\nodejs` ends up on PATH (the Node MSI installer does this by default).\n\n**Option C** — Keep both but coordinate PATH:\nIf both are intentional, the TypeScript workload should add `C:\\Program Files\\nodejs` to PATH explicitly, or the `refresh-path.ps1` should detect and resolve the nvm4w symlink conflict.\n\n## Environment\n\n- Windows 11 (Build 2026)\n- winget v1.28.240\n- CoreyButler.NVMforWindows 1.2.2\n- OpenJS.NodeJS.22 24.16.0 (installed by winget as the LTS package)","author":{"url":"https://github.com/floatingsidewal","@type":"Person","name":"floatingsidewal"},"datePublished":"2026-06-03T15:58:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/55/WindowsDeveloperConfig/issues/55"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:b6d1e893-9de7-669b-8fe2-06c695edbc29 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9BF6:1138FF:C7FEC5:1105087:6A4D58DA |
| html-safe-nonce | 556ed22ab9dfde146c3bc31331bca11be3fc7bbb0eda48c65f7e820c184e0257 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QkY2OjExMzhGRjpDN0ZFQzU6MTEwNTA4Nzo2QTRENThEQSIsInZpc2l0b3JfaWQiOiIyMTM5ODE4NDczMTg5ODkwMjY2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | c5b00b32431c92ef650ee1af641c28dde3ed82ee8f120a152e7ac78cb86b5074 |
| hovercard-subject-tag | issue:4581514183 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/microsoft/WindowsDeveloperConfig/55/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c36bae2c4a8e6aeaf179618c4c5bb97db1bc38ba1ebed87ae0a62ffddc66dfda/microsoft/WindowsDeveloperConfig/issues/55 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c36bae2c4a8e6aeaf179618c4c5bb97db1bc38ba1ebed87ae0a62ffddc66dfda/microsoft/WindowsDeveloperConfig/issues/55 |
| og:image:alt | Summary The main dev-config.winget installs NVM for Windows (CoreyButler.NVMforWindows), which manages Node.js versions via a symlink at C:\nvm4w\nodejs and adds that to PATH. However, the TypeScri... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | floatingsidewal |
| hostname | github.com |
| expected-hostname | github.com |
| None | 2a1443ff9733a3016431263ea73c93d8fe00c195eb4a7670ac30e7848f045441 |
| turbo-cache-control | no-preview |
| go-import | github.com/microsoft/WindowsDeveloperConfig git https://github.com/microsoft/WindowsDeveloperConfig.git |
| octolytics-dimension-user_id | 6154722 |
| octolytics-dimension-user_login | microsoft |
| octolytics-dimension-repository_id | 1245803238 |
| octolytics-dimension-repository_nwo | microsoft/WindowsDeveloperConfig |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1245803238 |
| octolytics-dimension-repository_network_root_nwo | microsoft/WindowsDeveloperConfig |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | f3bdd3157ea1f0fd738d408eceeead721acf1dc3 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width