Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

cli: upgrade cannot detect npm installs on Windows (spawns .cmd shims without a shell)

Abierto Apto para principiantes
#57,579 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
node.js, typescript
Área
cli

Línea de trabajo

Empieza leyendo el código de detección del método de instalación que inicia npm, pnpm, bun, yarn y vp, y luego compáralo con postinstall.mjs, que según el issue ya gestiona los shims de npm en Windows. Comprueba si la ruta de instalación tiene el mismo comportamiento al iniciar procesos. La tarea estará completa cuando se detecte una instalación global de npm y se actualice en Windows sin --method; verifícalo con los pasos de reproducción del issue.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

opencode upgrade / update on Windows always fails with "Could not detect the installation method" for npm-based installs, because install-method detection spawns npm/pnpm/yarn without a shell, and Windows cannot launch .cmd shims that way. --method npm bypasses detection, but the detection bug remains.

Environment

  • opencode version: 2.1.1 (also reproduced on 2.0.32 and 2.1.0)
  • OS: Microsoft Windows [Version 10.0.26200.9457] (Windows 11 25H2, x64)
  • Terminal: xterm-256color via agent harness; also fails headless (opencode update --print-logs)
  • Shell: C:\WINDOWS\system32\cmd.exe
  • Install/channel: release, npm install -g @opencode/cli (global prefix under the user profile)
  • Active plugins: none found in config

Reproduction

  1. On Windows, npm install -g @opencode/cli.
  2. Run opencode update (or opencode upgrade).
  3. Detection tries npm/pnpm/bun/yarn/vp and reports "Could not detect the installation method."

Minimal proof the spawn mode is the cause (healthy minimal PATH where where npm succeeds):

  • subprocess.run(['npm','--version'], shell=False) -> FileNotFoundError / WinError 2.
  • subprocess.run('npm --version', shell=True) -> 11.12.1.

(bun, a real .exe, spawns fine but correctly reports "not installed via bun".)

Expected Behavior

Detection recognizes the global npm install and upgrades it without requiring --method.

Actual Behavior

Could not detect the installation method. Pass --method to choose how to upgrade OpenCode.

The debug log shows spawning process command=npm args=["list","-g","--depth=0","@opencode/cli"] failing, because npm resolves to npm.cmd, which CreateProcess cannot launch directly (it only resolves .exe).

Additional Context

  • Consistently reproducible (2.0.32, 2.1.0, 2.1.1).
  • The project's own postinstall.mjs already documents this: "Windows cannot spawn npm's .cmd shim directly, so reuse the npm CLI that runs this script" via [process.execPath, process.env.npm_execpath]. Detection needs the same treatment (shell on win32, or resolve npm.cmd through ComSpec).
  • Workaround: opencode upgrade --method npm bypasses detection. Note the install step DOES use a shell (its failures surface cmd.exe's "not recognized" error), so --method works as long as the user's PATH is healthy; it fails only when PATH itself is broken (separate local issue on my machine: an over-long PATH).
  • Suggested fix: spawn package managers with a shell on Windows in both the detection and install paths, or invoke <mgr>.cmd via ComSpec.
Lenguaje dominante
TypeScript
Estrellas
215k
Forks
28.9k
Merge medio
8 h 11 min
PR fusionados (30 d)
365

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de anomalyco/opencode

Todos los issues de anomalyco/opencode

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.