Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở Phù hợp với người mới
#57,579 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
74/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
node.js, typescript
Lĩnh vực
cli

Hướng nghiên cứu

Bắt đầu bằng cách đọc mã phát hiện phương thức cài đặt khởi chạy npm, pnpm, bun, yarn và vp, sau đó so sánh với postinstall.mjs, vốn theo issue đã xử lý các shim npm trên Windows. Kiểm tra xem đường dẫn cài đặt có cùng hành vi khởi chạy tiến trình hay không. Hoàn thành khi phát hiện được bản cài đặt npm toàn cục và nâng cấp trên Windows mà không cần --method; hãy xác minh bằng các bước tái hiện của issue.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.
Ngôn ngữ chính
TypeScript
Star
215k
Fork
28.9k
Merge trung bình
8 giờ 11 phút
Pull request đã merge (30 ngày)
365

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của anomalyco/opencode

Tất cả issue của anomalyco/opencode

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.