我已经使用here方法设置了npm的默认目录
我在下面附上了我使用的命令的屏幕截图:
~/.profile
包含以下内容:
它工作正常。
然而,当我注销并重新登录,并检查pm2版本时,我遇到了下面的错误:
是什么导致了这个问题?
以下命令的输出如下:npm prefix -g
是/home/ec2-user/.npm-global
npm prefix
是/home/ec2-user
echo $PATH
是/home/ec2-user/.npm-global/bin:/home/ec2-user/.nvm/versions/node/v18.18.0/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
这个问题快把我逼疯了。我在网上找不到任何可以帮助解决这个问题的资源。解决方案将受到高度赞赏。
此外,我注意到不喜欢StackOverflow帖子的人数有所增加。如果你决定不喜欢这篇文章,考虑写一个评论为什么,所以这个问题可以改进,以帮助未来的读者。否则,它将被假定,你没有阅读的问题,并正在垃圾邮件/拖钓周围。
1条答案
按热度按时间ih99xse11#
又见到你真是太巧了。我想我对your last question的回答不起作用...:(
最好是评论或编辑最后一个问题,但是哦,好吧。
我仍然猜测这个问题是由多次部分尝试安装nodejs引起的,它们现在正在互相攻击。
截图中的错误消息(用户的.npmrc文件.)特别有启发性。
让我们从头开始,试着解决这个烂摊子。最简单的方法是创建一个新的EC2机器,但是要清理现有的机器,我会尝试这样做:
1.检查/root中有哪些文件:
ls -la /root/
1.删除任何听起来与node或npm或nvm相关的内容。例如
.node
、.npm
、.npm-global
、.npmrc
、.nvm
1.如果
.profile
在您开始之前不存在,请删除它--它显然没有帮助(bash文件优先级的解释)1.检查/etc/skel中的文件(这是包含新用户未修改的默认配置文件的模板):
ls -la /etc/skel/
1.查看/etc/skel/和/root/中的任何文件名,并将文件内容相互比较。如果/root/中的文件包含任何与node或npm或nvm相关的行,请删除这些行。
1.请重新登录。
1.尝试运行
node
,npm
,nvm
,pm2
-所有这些都应该说文件未找到1.运行
grep -r npm-global /root /etc
来搜索任何剩余的npm-global提及(应该没有)1.好了,希望nodejs现在完全恢复了。
再次安装node.js。有几种方法可以做到这一点(“nvm”是其中之一)。我不是特别熟悉EC2,但我发现Amazon有这个官方教程,它推荐使用nvm:
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html
重新登录。
有了这个,你应该不会在登录时看到任何关于“与nvm不兼容”的错误,并且你不需要遵循https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally。
你可以例如。
npm install -g pm2
正常情况下,运气好的话,它应该能正常工作。