【问题标题】:The NPM global flag seems to be inconsistent on WindowsNPM 全局标志在 Windows 上似乎不一致
【发布时间】:2014-11-13 02:47:03
【问题描述】:

从控制台运行

> npm root -g

或以编程方式

var npm = require("npm");
npm.load(null, function (err, npm) {
    npm.config.set("global", true);
    npm.root;
});

我在 Windows 上得到不同的结果。第一个返回C:\Users\myuser\AppData\Roaming\npm\node_modules,第二个返回C:\Program Files (x86)\nodejs\node_modules。当我安装模块时也会发生同样的情况,以编程方式尝试将其安装在程序文件而不是 AppData 上。

这可能是一个错误吗?还是我做错了什么?

在 linux 上它始终如一地工作。我没有在 Mac 上尝试过。

更新:我在 Mac 上试过了,效果很好。

【问题讨论】:

  • 我在旧版本的 NPM 中遇到过这种情况。你用的是什么版本?
  • 1.2.10(注意:所以希望 cmets 至少为 15 个字符,所以我必须添加此注释)
  • 节点 0.10.20 和之后的 npm install -g npm 也会发生这种情况。至少如果节点不是全新安装的话。也许在那种情况下它不会发生?答案中提到的 npmrc 甚至都不存在。

标签: node.js npm


【解决方案1】:

区别似乎在于 Windows 的 Node.js 安装中包含的 npmrc

# C:\Program Files (x86)\nodejs\node_modules\npm\npmrc

prefix=${APPDATA}\npm

要处理的是as a builtin config 的路径位置,而不是globaluser 配置,因此npm 的“本地”安装不会处理它。直接执行本地安装时可以看到:

> .\node_modules\.bin\npm root -g
C:\Program Files (x86)\nodejs\node_modules

【讨论】:

  • 这个应该改吗?或者本地安装的 npm 是否应该包含类似的 npmrc?
  • @MiguelMadero 是否应该更改可能取决于isaacsel al. 它可能值得submitting an issue;看看他们的反应。
  • 我提出了the issue。到目前为止,没有答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2012-06-08
  • 2013-04-21
  • 2014-05-23
  • 2016-02-22
  • 2013-03-10
  • 2018-05-30
相关资源
最近更新 更多