2013-02-13 66 views
2

飛奔從控制檯故宮全局標誌似乎是不一致的在Windows

> 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上,它工作正常。

+0

我在舊版本的NPM中發生過這種情況。你使用什麼版本? – Brad 2013-02-13 04:00:51

+0

1.2.10(注意:SO想要至少有15個字符的註釋,所以我不得不添加這個註釋) – 2013-02-13 04:31:35

+0

之後,節點0.10.20和'npm install -g npm'也發生了這種情況。至少如果節點不是乾淨的安裝。也許在這種情況下,它不會發生?答案中提到的npmrc並不存在。 – smhg 2013-10-28 18:59:55

回答

4

的差異似乎是已包含在Node.js的爲Windows安裝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 
+0

這應該改變嗎?或者應該在本地安裝的npm包含一個類似的npmrc? – 2013-02-13 18:16:53

+0

@MiguelMadero是否應該改變它可能會達到['isaacs'](https://github.com/isaacs),[el al。](https://github.com/isaacs/npm/貢獻者)它可能值得[提交問題](https://github.com/isaacs/npm/issues);看他們如何迴應。 – 2013-02-13 19:28:34

+0

我提出了[問題](https://github.com/isaacs/npm/issues/3155)。到目前爲止,沒有答案。謝謝 – 2013-02-13 22:31:33