Home · Topic · 18 entries
npm errors fixed: install, scripts and npm 12
npm errors rarely say what actually went wrong: a missing script, a peer dependency conflict, an install script npm 12 now blocks, or a native binary that never downloaded. Every entry below was reproduced on a real install with the exact npm and Node versions listed, and the fix was run before it was written up.
- No.054
Next.js 16.3 vulnerabilities: which version is patched?
16.3.0 carries 9 published advisories (3 critical) and 16.3.7 still carries 6, because the September 30 fixes skipped it. The upgrade built cleanly on every version I tried. The traps are in the tools: npm audit fix jumps you a minor version or does nothing at all, and next upgrade crashes on Windows.
TESTED4 min - No.049
Fix: @prisma/client did not initialize yet (Prisma 6 and 7)
The error says run prisma generate. Why it keeps coming back on Windows, npm 12 and CI, reproduced, plus the errors Prisma 7 throws instead.
> D:\project\node_modules\.prisma\client\default.js:43
DATABASE4 min - No.048
prisma generate not working: "No command registered" (Prisma 8)
npm now installs a Prisma 8 release candidate as prisma@latest. It has no generate, migrate dev or db push. Reproduced, with the fix for Docker and CI.
> {"kind":"result","envelope":{"ok":false,"commandId":"","error":{"code":"CLI.UNKNOWN_COMMAND","severity":"error","summary":"No command registered for `generate`","nextActions":[{"kind":"run-command","label":"List every command","command":"prisma --help"}]}}}
DATABASE4 min - No.042
Fix: "Could not locate the bindings file" in sqlite3
sqlite3 or better-sqlite3 installed fine, then can't find its .node file. Four causes reproduced, how the Tried: paths tell them apart, and the fix for each.
> Error: Could not locate the bindings file. Tried:
FIXED3 min - No.040
Fix: Puppeteer "Could not find Chrome (ver. …)"
Puppeteer can't find Chrome though npm install worked. Six causes reproduced on Windows and Linux, including npm 12, upgrades and Docker, each with its fix.
> Error: Could not find Chrome (ver. 154.0.8037.57). This can occur if either
FIXED5 min - No.039
npm 12 breaking changes, tested: what actually breaks
The headline change, install scripts blocked by default, broke puppeteer, cypress, sqlite3 and Claude Code's npm package, and silently skipped lefthook's git hooks. esbuild, bcrypt, sharp and better-sqlite3 kept working. Every install reported success, and the only sign was a warning after the summary.
TESTED5 min - No.038
Fix: Claude Code "not compatible with the version of Windows"
Windows says claude.exe won't run right after an npm install of Claude Code. Your Windows is fine. Reproduced on npm 12, with the reinstall that fixed it.
> This version of C:\...\claude-code\bin\claude.exe is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.
AGENTS3 min - No.036
Fix: npm error Missing script: "dev" (and "start")
npm can't find the script you asked for. Six real causes, from a stray package.json up the tree to monorepos, and two commands that show which one you have.
> npm error Missing script: "dev"
FIXED5 min - No.031
TypeScript 7 migration guide: breaking changes, tested
Every option TypeScript 6.0.3 marked as deprecated was a hard error on 7.0.2, and ignoreDeprecations no longer silences it. Two defaults that arrived in 6.0 (strict on, @types not loaded automatically) also break projects coming straight from 5.9.
TESTED6 min - No.029
Angular compilation initialization failed on TypeScript 7
Angular 22 crashes on TypeScript 7 with reading 'Error', not the usual version warning. What actually failed, and the setup that builds with tsc 7, tested.
> Application bundle generation failed. [0.412 seconds]
FIXED2 min - No.022
Fix: typescript-eslint does not support TS 7.0 (ESLint on TS 7)
When typescript-eslint will support TypeScript 7, why npm refuses the install, and the setup that keeps TypeScript 7 while ESLint runs normally today.
> npm error code ERESOLVE
FIXED3 min - No.020
Upgrading to TypeScript 7? 9 tools tested (ESLint, Jest, ts-node)
Plain TypeScript 7 broke ts-node, ts-jest, typescript-eslint, TypeDoc and ts-loader, and npm refused to install it at all without a flag. Microsoft's side-by-side setup ran all 9 tools with no errors while tsc stayed on 7.
TESTED6 min - No.019
Fix: "Cannot find native binding" in Vite 8 (Rolldown)
Vite 8 can't find Rolldown's native binding on Windows, WSL or Linux. Why @rolldown/binding-win32-x64-msvc goes missing, and the one-command fix.
> Error: Cannot find native binding. npm has a bug related to optional dependencies
FIXED5 min - No.017
Fix: 'vite' is not recognized as an internal or external command
Windows says the command doesn't exist, but it's right there in node_modules. The four causes, how to tell them apart in one command, and what each one needs.
> 'vite' is not recognized as an internal or external command,
FIXED4 min - No.016
Fix: Cannot read properties of undefined (reading 'fileExists')
ts-node and webpack's ts-loader crash with this on TypeScript 7, before your code even runs. Which versions do it, why npm didn't warn you, and four ways out.
> C:\project\node_modules\ts-node\dist\configuration.js:91
FIXED3 min - No.011
npm vs pnpm vs Yarn vs Bun: install speed benchmark (2026)
pnpm is the best all-rounder: 2.8× faster than npm from a cold start and near-instant when nothing changed. Bun wins with a warm cache. Yarn 1 was the slowest and needed a 3.7 GB cache.
TESTED4 min - No.007
Fix: npx tailwindcss init “could not determine executable to run”
npx tailwindcss init fails on a fresh install. Why Tailwind v4 does this, two fixes that work, and the command that fails silently. Reproduced.
> $ npx tailwindcss init
FIXED2 min - No.006
Fix: npm ERESOLVE unable to resolve dependency tree (React 19)
npm won't install because a package doesn't list React 19. Four fixes compared, and why the most-copied one breaks on the next install.
> npm error code ERESOLVE
FIXED1 min
Post card · Newsletter
Get the next fix in your inbox.
One short email when a new entry is published. No spam, never shared, and you can leave any time.
— Nilay