Skip to content

CLI 检测机制不兼容自定义 npm prefix #181

Description

@baoyu0

问题描述

PromptHub 桌面端(v0.5.8)的 CLI 安装页面显示"未安装",但 @prompthub/cli 实际上已正确全局安装且可正常使用。

环境

  • OS: Windows
  • PromptHub 桌面端: v0.5.8
  • CLI: 0.5.8-beta.3 (已全局安装)
  • npm prefix: D:\npm-global(用户自定义,非默认路径)

证据

检查项 结果
npm config get prefix D:\npm-global
npm list -g @prompthub/cli @prompthub/cli@0.5.8
prompthub --version 0.5.8-beta.3 ✅ 正常
where prompthub D:\npm-global\prompthub ✅ 在 PATH 中
桌面端 CLI 检测页 ❌ 显示"未安装"

推测根因

桌面端检测 CLI 的机制存在以下可能的问题之一:

  1. 硬编码默认 npm 路径:只检查 C:\Users\<user>\AppData\Roaming\npm,不读取 npm config get prefix 的实际值。
  2. 依赖 npx 检测@prompthub/cli 并未发布到公共 npm registry(npm view @prompthub/cli 返回 404),导致 npx @prompthub/cli --version 必然失败。
  3. 子进程未继承用户 PATH:Electron spawn 的子进程可能没有加载用户 PATH,找不到自定义 prefix 目录下的二进制文件。

建议修复方向

检测 CLI 时应优先通过 npm root -g 获取实际全局安装路径,然后检查该目录下是否存在 @prompthub/cli,而不是:

  • 硬编码默认 npm 路径
  • 依赖 npx 去 registry 查包

临时解决方法

用户已在 D:\npm-global 正确安装了 CLI,shell 中正常工作。桌面端可考虑:

  • 或提供一个"手动指定 CLI 路径"的配置项
  • 或在检测失败时显示已安装的路径供用户确认

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions