我已经通过执行 全局安装了 fkill npm i -g fkill
。执行 时我可以看到它已安装npm list
。运行 时,它仅显示 fkill 已全局安装npm list -g --depth=0
。但是,当我运行时,fkill
我收到“未找到命令”信息。
接下来我运行“npm get prefix”并得到“/home/alex/.node_modules”。这是我的 PATH:
/home/alex/.node_modules/bin:/home/alex/.npm-global/bin:/home/alex/.node_modules/bin:/home/alex/.node_modules/lib/node_modules:/home/alex/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin
这一切都始于我尝试使用 pacman 运行系统更新并遇到节点冲突之后,因此我卸载了节点并运行了更新,然后重新安装了节点。
有任何想法吗?
这是在 Manjaro 上。
答案1
你需要得到全球的npm 前缀在你的 PATH 变量中,这似乎不是你的情况,要了解你的系统 npm 全局前缀路径是什么,请使用“ npm get prefix -g
”命令。
“ npm get prefix
”命令只会打印本地前缀,正如 npm 文档所述 [1]。对于你的情况,我猜 npm 全局前缀将是这样的:
/home/alex/.npm-global/bin
因此,解决问题最简单的方法是将“npm get prefix -g”返回的全局 npm 路径添加到 PATH,如果我猜测它的值是正确的,那么只需执行以下操作:
export PATH=$PATH:/home/alex/.npm-global/bin
还要编辑~/.bashrc file
或依赖 shell 脚本,其中 npm 路径设置为它们的值,并将该全局路径添加到 $PATH 环境变量。
如果这没有帮助,您可以fkill
通过运行以下命令检查已安装命令的可用性:
which fkill
或者运行
ls -l /home/alex/.npm-global/bin
或直接在那里搜索:
find /home/alex/.npm* -name fkill
答案2
帖子 全局节点模块安装不正确。未找到命令 包含对某些人有用的几种解决方案。
一 回答 发帖人成功了,尽管他首先必须重新安装 Manjaro。这个答案总结了这篇文章 解决全局安装软件包时出现的 EACCES 权限错误,我引用一下:
我的 npm 也找不到全局包。我按照 Brad Parks 的建议做了:
npm config set prefix /usr/local
然后我得到了一个 EACCES 权限错误(请勿使用sudo npm install -g <package>
),并通过官方 npm 文档修复了它: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
- 在命令行上,在您的主目录中,创建一个用于全局安装的目录:
mkdir ~/.npm-global
- 配置 npm 以使用新的目录路径:
npm config set prefix '~/.npm-global'
- 在您喜欢的文本编辑器中,打开或创建一个 ~/.profile 文件并添加以下行:
export PATH=~/.npm-global/bin:$PATH
- 在命令行上,更新系统变量:
source ~/.profile
- 然后全局安装一个包并测试它!例如:``` npm install -g awsmobile-cli awsmobile configure