无法让“npm install -g”在任何包上工作(AppData/Roaming/npm 始终为空)

Posted

技术标签:

【中文标题】无法让“npm install -g”在任何包上工作(AppData/Roaming/npm 始终为空)【英文标题】:Cannot get "npm install -g" to work on any packages (AppData/Roaming/npm always empty) 【发布时间】:2015-12-07 08:19:53 【问题描述】:

在工作时在 Windows 7 Enterprise 上运行 nodejs。

每当我安装需要 -g 访问权限的 node_module 时,根据经验,我知道它应该在 %AppData$/Roaming/npm 中创建一个 *.bat 文件,但由于某种原因它不再这样做了。

例如,我将运行npm install gulp -g,控制台看起来安装正确,但文件不会在 AppData 文件夹中。如果我尝试运行 gulp 命令,则会收到错误 sh.exe": gulp: command not found

如果我以管理员身份在控制台中运行npm install gulp -g 命令,它会将文件安装到管理员(而不是普通用户)的 %AppData% 文件夹中。因此,如果我通过我的非管理员用户运行 gulp 命令,我仍然会收到错误 sh.exe": gulp: command not found

有什么想法吗?

【问题讨论】:

【参考方案1】:

找到解决方案:

(1) 运行命令:npm config get prefix,输出为C:\Program Files (x86)\Git\local。不知道为什么设置为这个,因为它不是默认值。

但我改用了:npm config set prefix "$APPDATA\npm"

现在当我安装 --g 模块时,即。 npm install gulp -g,它会安装到这个理想的目录中,不再抛出 EPERMENOENT 错误。

(2) 仍然需要为 npm 文件夹添加一个PATH 条目。命令export PATH=$PATH:/c/Users/YOUR_USERNAME/AppData/Roaming/npm 暂时有效,但如果您关闭控制台并再次打开它,可能无法保存(如果您不是管理员)。

但您也可以使用echo 'export PATH=$PATH:/c/Users/YOUR_USERNAME/AppData/Roaming/npm' >> ~/.bash_profile,它将创建一个.bash_profile 文件,每次打开控制台时都会运行该文件。所以从这一点开始,它应该会自动添加所需的PATH 条目。

【讨论】:

花费数小时寻找可行的解决方案。谢谢! 我也在这上面浪费了几个小时。呸呸呸呸。软件开发,对吗? 导出路径也可以编辑系统环境变量;路径 = %appdata%/npm; 就像 Div Tiwari 所说,编辑您的系统环境变量,然后关闭您的命令行并重新打开它。它会工作的。 非常感谢您的解决方案。在我的情况下,一个文件夹 $Appdata/npm/ 正在创建,这导致了混乱。

以上是关于无法让“npm install -g”在任何包上工作(AppData/Roaming/npm 始终为空)的主要内容,如果未能解决你的问题,请参考以下文章

Centos:$ npm install -g vue-cli module.js:549 为啥任何的npm install均报此错,在window上的是正常

无法运行 npm 命令“npm install -g tty.js”。

Homebrew npm install:无法符号链接

npm install -g 和npm install --save-dev的关系

无法运行 sudo npm install -g typescript

npm install -g 同时更新 package.json?