代码之家  ›  专栏  ›  技术社区  ›  Estus Flask

使用npx命令时出现意外的包版本

  •  0
  • Estus Flask  · 技术社区  · 4 年前

    版本控制的包不与一起运行 npx ( npm exec )当程序包已经使用npm全局安装时。环境是Windows 10,节点16,NPM 8。

    npx npm@6 -v 输出结果:

    Need to install the following packages:
      npm@6
    Ok to proceed? (y) y
    8.5.2
    

    后来的 npxnpm@6-v 调用跳过到缓存的安装并运行全局安装的包。其他全局程序包也是如此。我可以验证是否将正确的软件包版本安装到 npm-cache/_npx 但不确定他们接下来会发生什么

    我相信自从NPM 6以来,这种情况已经改变了, npx 使用了缓存

    我想知道里面发生了什么。这是一个已知的问题吗?有什么解决办法可以在安装默认软件包的同时运行版本化的全局软件包?

    0 回复  |  直到 4 年前
        1
  •  1
  •   aarondiel    4 年前

    我还没能在linux下复制这个。 (使用第8.5.5节中的npm/npx)

    > npx npm@6 -v 
    Need to install the following packages:
      npm@6
    Ok to proceed? (y) y
    6.14.16
    

    如果你更新,这个问题可能会自行解决,但我也可能是npm的windows实现中的一个bug。

    目前,您还可以尝试在WSL(linux的windows子系统)下运行程序。

    我对这个有点不愉快的回答感到抱歉,但我也找不到任何更好的理由来解释这个问题

        2
  •  1
  •   Arnav Thorat natanavra    4 年前

    要解决此问题,可以在WSL(Windows Linux子系统)下运行该命令。原因是Windows中可能存在错误。


    要安装WSL,可以执行以下步骤。

    1. 确保你正在跑步 Windows 10版本2004及更高版本(内部版本19041及更高) Windows 11 。要检查此项,您可以打开 (使用 Windows + R ),并键入 winver 。您可以在此处查看版本。

      请参阅下面的GIF,以获得如何操作的可视化表示。

      Run GIF

      此GIF是在Windows 7虚拟机中制作的。

    2. 在PowerShell或命令提示符中运行以下命令( 以管理员身份运行 )。

      $ wsl --install
      

      这应该会重新启动您的机器,并将Ubuntu发行版添加到WSL2中。

    有关安装步骤的更多信息,请参阅 Microsoft's official page


    在WSL中运行命令应该有助于解决该问题。

    $ npx npm@6 -v