npm - npm 无法更改 Jasmine 包版本
问题描述
如果我运行npm view jasmine version
或npm view jasmine version -g
从~
返回的版本是3.3.1
我需要版本2.8.0
所以我尝试降级npm install jasmine@2.8.0 -g
但npm 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
解决方案
理解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 注册表。
补充说明:
您正在运行的两个 npm 命令,即:
npm view jasmine version
和
npm view jasmine version -g
实际上是相同的命令。该
view
命令不提供-g
选项。该-g
选项只是被忽略了。该
npm list
命令(正如您已经发现的那样)应该用于检索有关安装在系统上的软件包的信息。因此,这就是为什么它表明您的预期结果。
推荐阅读
- python - 无法从 AWS Lambda 上的 Scrapy 获取结果
- powershell - PowerShell脚本不从变量中移动项目
- sql - 请建议如何在oracle中实现以下o / p?
- java - 进入活动 2 后如何禁用活动 1?
- wordpress - WP/ACF Query post from selection
- tableau-api - 使用 Tableau API 创建用户
- php - 更改 wordpress/woocommerce 插件中的导入设置
- compiler-errors - 当只有一个定义时,“不是唯一定义的名称”?
- asp.net-mvc - 如何在提交按钮单击时将视图模型列表作为输入参数发送到视图中的操作
- r - 在 R 中编写交叉验证