首页 > 解决方案 > npm 无法更改 Jasmine 包版本

问题描述

如果我运行npm view jasmine versionnpm view jasmine version -g~返回的版本是3.3.1

我需要版本2.8.0所以我尝试降级npm install jasmine@2.8.0 -gnpm view jasmine version仍然3.3.1

现在,如果我npm list -g看到了 jasmine ( 2.8.0) 的正确版本……那么 3.3.1 来自哪里?

    ├─┬ jasmine@2.8.0
    │ ├── exit@0.1.2
    │ ├─┬ glob@7.1.3
    │ │ ├── fs.realpath@1.0.0
    │ │ ├─┬ inflight@1.0.6
    │ │ │ ├── once@1.4.0 deduped
    │ │ │ └── wrappy@1.0.2
    │ │ ├── inherits@2.0.3
    │ │ ├─┬ minimatch@3.0.4
    │ │ │ └─┬ brace-expansion@1.1.11
    │ │ │   ├── balanced-match@1.0.0
    │ │ │   └── concat-map@0.0.1
    │ │ ├─┬ once@1.4.0
    │ │ │ └── wrappy@1.0.2 deduped
    │ │ └── path-is-absolute@1.0.1
    │ └── jasmine-core@2.8.0

标签: npmjasmine

解决方案


理解npm view命令:

当您运行以下任一npm view命令时:

npm view jasmine version

或者

npm view jasmine version -g

您正在向 npm 注册表发送GET请求。更具体地说,您正在向以下端点发送请求:

https://registry.npmjs.org/jasmine

-d您可以通过将选项附加到命令以获取其他日志记录信息来验证这一点。例如,如果您运行;

npm view jasmine version -d

您将在日志中看到其他信息,其中包括以下内容:

npm http request GET https://registry.npmjs.org/jasmine

注意:上面的这一行表示您的view命令向其发出请求的端点。


那么 3.3.1 是从哪里来的呢?

3.3.1是 npm 注册表中可用的jasmine包的最新版本。任何view命令的结果都不会指示有关系统上安装的软件包的信息,而是返回有关保存在 npm 注册表中的软件包的信息(元数据)。

运行时,您将继续看到 3.3.1记录到控制台的版本;

npm view jasmine version

(从系统上的任何目录位置),直到更新版本的jasmine发布到 npm 注册表。


补充说明:

  1. 您正在运行的两个 npm 命令,即:

    npm view jasmine version
    

    npm view jasmine version -g
    

    实际上是相同的命令。该view命令不提供-g选项。该-g选项只是被忽略了。

  2. npm list命令(正如您已经发现的那样)应该用于检索有关安装在系统上的软件包的信息。因此,这就是为什么它表明您的预期结果。


推荐阅读