Skip to content

fix(server): resolve node/npm by absolute path in AI CLI Tools step - #35

Open
sandrolborges wants to merge 1 commit into
promovaweb:mainfrom
sandrolborges:fix/ai-cli-tools-node-path-shadowing
Open

fix(server): resolve node/npm by absolute path in AI CLI Tools step#35
sandrolborges wants to merge 1 commit into
promovaweb:mainfrom
sandrolborges:fix/ai-cli-tools-node-path-shadowing

Conversation

@sandrolborges

Copy link
Copy Markdown

Problema

Na Etapa 7 (AI CLI Tools) do server.sh, o Node.js 24 é instalado via NodeSource/APT e validado com:

node --version | grep -Eq '^v24\.'
npm_bin=$(command -v npm)

Em máquinas com um gerenciador de versões Node instalado (nvm, fnm, volta, asdf), o bin/ desse gerenciador costuma vir antes de /usr/bin no PATH. Isso faz node/command -v npm resolverem para a versão do gerenciador em vez do Node 24 recém-instalado.

Com set -Eeuo pipefail, a falha do grep -Eq aborta a etapa sem nenhuma mensagem de erro visível — o usuário só vê "Step failed" no resumo final, sem pista da causa real. O mesmo problema afeta silenciosamente as instalações seguintes dos pacotes npm (@anthropic-ai/claude-code, @openai/codex, @github/copilot, skills@latest), já que o npm resolve seu interpretador via shebang #!/usr/bin/env node, também sujeito ao PATH.

Reportado em #34, encontrado logo após reproduzir #29 / #30 (as duas falhas juntas bloqueiam totalmente uma instalação --yes neste tipo de ambiente).

Correção

Resolve node/npm pelos caminhos que o dpkg efetivamente instalou (dpkg -L nodejs), em vez de depender de command -v/PATH, e invoca o npm explicitamente através desse node (em vez de confiar no shebang) nas chamadas de instalação/verificação. Assim a etapa fica correta independentemente do que estiver na frente do PATH.

Mudança cirúrgica, restrita à função step_7() de server.sh.

Ambiente testado

  • OS: Debian GNU/Linux 12 (bookworm), container LXC (Proxmox)
  • SetupVibe: v0.41.8
  • nvm com Node v22.23.0 ativo (reproduz o bug antes da correção)

Test plan

  • bash -n server.sh — sintaxe ok
  • shellcheck server.sh — sem warnings novos (0 antes, 0 depois)
  • Revisão do diff — mudança restrita a step_7()
  • Execução ponta a ponta do instalador em ambiente com nvm ativo (não reexecutei o instalador completo neste fork; a lógica replica exatamente o contorno manual que resolveu o problema no ambiente original)

Fixes #34

The Node.js version check and npm resolution in step_7 relied on
`command -v`/PATH lookups. On machines with a Node version manager
(nvm, fnm, volta, asdf) installed, that manager's bin directory is
typically ahead of /usr/bin on PATH, so `node`/`npm` resolved to the
manager's Node instead of the Node 24 just installed via NodeSource.

Combined with `set -Eeuo pipefail`, this made the version check fail
silently, aborting the step with no visible error message. It also
meant the subsequent npm installs of claude-code/codex/copilot/skills
could run against the wrong Node/npm via npm's `#!/usr/bin/env node`
shebang.

Resolve node/npm by the paths dpkg actually installed them to, and
invoke npm through that node explicitly (bypassing shebang-based PATH
resolution) so the step is correct regardless of what's shadowing
PATH.

Fixes promovaweb#34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Etapa AI CLI Tools falha silenciosamente quando nvm/fnm/volta sombreiam o Node 24 do APT

1 participant