node.js - 无法让 "npm install -g"处理任何包(AppData/Roaming/npm 始终为空)

标签 node.js windows-7 npm gulp node-modules

工作时在 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) 运行命令: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 条目。

关于node.js - 无法让 "npm install -g"处理任何包(AppData/Roaming/npm 始终为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512154/

相关文章:

node.js - 如何包含 Node 二进制 npm 的路径

node.js - 如何在 Nodejs MongoDb 中进行连接连接池

node.js - 为什么 Express Router 会更改静态资源的路径?

VB6 list 不适用于 Windows 7

delphi - 如何在 Windows 7 中获取域名

javascript - package.json 中的根目录

javascript - 将命令行参数发送到 npm 脚本

ios - 在 Mac Pro 上使用 PhoneGap 的开发平台

node.js - Slack API-chat.update : "message_not_found"

java - Solr - 在 Windows 7 64 位上使用 64 位 Java,而不是 32 位 Java