Start with observable state
Confirm the root and files before changing anything: pwd, ls -la, and cat package.json reduce directory mistakes. Then see scripts with npm run, top-level packages with npm ls, and available commands with help or which.
If a process is already active, jobs shows its identifier; stopping and restarting the right job is safer than opening several servers for the same task.
pwd
ls -la
cat package.json
npm run
npm ls
which npm
jobsSymptom, next check
“Command not found”: run help or which and use npm exec for a local binary. “Script does not exist”: compare its name with npm run. “Native package”: read the installer warning and run that flow where the binary is supported.
“Preview stopped”: confirm jobs, restart only the server job, and open the returned URL. “File does not appear”: save, check the root, and search by path; node_modules, .git, dist, and .odete are skipped in recursive navigation.
| Symptom | Check |
|---|---|
| missing script | npm run |
| local binary | npm exec name or which name |
| active server | jobs |
| port/Preview | server’s displayed URL |
| text error | grep -rn "term" src |
| Swift limit | Problems and Swift Playgrounds |
When to change environments
Move to a Mac or CI for a native addon, Astro/Next build, Swift compilation, system integration, or any Node API the runtime does not implement. Recording the command, output, and package version makes reproduction concrete.
Before reporting a bug, reduce the case: typed command, project directory, smallest code, and full output. That separates a known Odete limit from a project-specific problem.