【问题标题】:Packages installed from admin cmd/powershell not added to PATH for regular cmd/powershell (foo not recognized...)从 admin cmd/powershell 安装的软件包未添加到常规 cmd/powershell 的 PATH(无法识别 foo...)
【发布时间】:2019-11-11 15:42:33
【问题描述】:

我正在尝试全局安装必须从管理 cmd/powershell 安装的软件包(它使用 windows-build-tools)。当我使用管理 powershell 安装它时,一切正常 - 安装运行没有错误,并且包的命令行界面被添加到路径中:

PS C:\WINDOWS\system32> npm install -g prisma
C:\Users\XXX\AppData\Roaming\npm\prisma -> C:\Users\XXX\AppData\Roaming\npm\node_modules\prisma\dist\index.js
+ prisma@1.34.0
added 588 packages from 448 contributors and updated 1 package in 23.005s
PS C:\WINDOWS\system32> prisma --version
Prisma CLI version: prisma/1.34.0 (windows-x64) node-v10.9.0

但是,当我尝试从常规 cmd/powershell 访问命令行界面时,无法识别包的名称:

C:\Users\XXX>prisma --version
'prisma' is not recognized as an internal or external command,
operable program or batch file.

如何确保从管理员命令行安装的软件包可以被常规命令行访问?

【问题讨论】:

    标签: windows powershell npm


    【解决方案1】:

    Alexey Ivanov 不久前回答了一个类似的问题,his answer 会在这里为您提供帮助。具体如下:

    值得一提的是,NODE_PATH 仅在导入时使用 Node 应用程序中的模块。当您想使用全局安装的模块时 您的 CLI 中的二进制文件,您还需要将其添加到您的 PATH 中,但没有 node_modules 部分(例如 Windows 7/8/10 中的 %AppData%\npm)。

    最后一点,如果您的模块安装在“%AppData%\npm\node_modules”中,您的路径将包括“%AppData%\npm”。

    Net-net,这不是 Powershell 问题。这是您正在安装的软件包的问题。

    而且,如果您想深入了解如何创建 CLI 包,请查看 Rubens Mariuzzo A guide to creating a NodeJS command-line package 的文章:

    在 Windows 上,npm 会做同样的事情(只有当 shebang 是 指定)但也会创建一个调用节点的 {command-name}.cmd 执行我们指定的命令文件。

    运行 Windows 10.0.17763,我能够通过 npm (6.9.0) 安装“prisma”,并且可以从新的控制台会话中访问它。我能够从提升和未提升的会话进行安装,结果相同。

    这是我安装后的路径:

    【讨论】:

    • 这不是特定于软件包的问题,​​具有 CLI 接口的软件包在全局安装后通常可以正常访问,无需手动编辑路径 - 这里的问题是从全局安装的软件包无法从常规命令行访问管理命令行,只能从其他管理命令行访问。
    • @ArtemZakharov 我无法重现您所描述的问题;详情见我的帖子。我看到一切正常。关于 NPM 放置内容和更新内容的解释并不是因为我希望您在完成后手动更新安装元素。这样您就可以仔细检查这些事情并告诉我们没有发生的事情。由于显然我可以按照您的说明安装 prisma,因此我们需要有关您的特定设置的更多信息。
    • 我决定尝试完全重新安装 NPM,并且在这样做之后(并确保在安装过程中检查“安装所有构建工具”)我可以从任何级别调用包命令行没有问题...奇怪。我想我可能遗漏了一些构建工具(如 Python 2.7)并且重新安装恢复了一切。
    • 没关系,做了更多的实验,结果发现我只是缺少系统路径中的某些内容 - 我将%AppData%\npm 添加到系统 PATH 变量中,它一劳永逸地解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 2010-10-06
    • 2019-03-05
    • 2014-08-02
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多