当前位置: 首页 > 知识库问答 >
问题:

为什么我有两个版本的npm

祝叶五
2023-03-14

我试图在ubuntu服务器上安装npm和nodejs,但注意到不知何故,在运行sudo apt-get安装nodejs npm后,我最终得到了两个版本。我知道这一点,因为当我运行npm-v时,它会返回1.3.10,而当我运行sudo npm-v时,它返回2.3.0。在我继续之前,我想把这个设置好。有人明白我为什么会有两个版本吗?我的理解是,安装nodejs也应该安装npm,但这只允许我以更高的权限运行npm,我知道我不应该这样做。谁能让我知道我做错了什么?谢谢你。

共有3个答案

蒯安平
2023-03-14

似乎包npm包括nodejsnodejs包括npm。至少,它们包括不同版本的npm(我没有检查节点版本),然后冲突。事实证明,nodejs包含了npm的最新版本(我假设是节点的最新版本),所以这就是我选择继续的版本。这是对我有效的完整解决方案。

卸载节点和npm的所有版本。然后运行sudo apt get install nodejs。最后,重新启动系统。

重新启动后,npm可以在没有提升权限的情况下运行,但在没有提升权限的情况下仍无法安装。为了解决这个问题,这个答案中的建议很有用。简而言之,创建以下配置文件以将包存储在不同的位置:

#~/.npmrc
prefix=~/.npm_modules

我不完全确定重新启动会起到什么作用,但似乎在卸载后,npm包的一些内存会保留下来。在重新启动之前,ubuntu会继续在/usr/bin/中查找npm,即使它位于/usr/local/bin/中。我想这与PATH环境变量中目录的顺序有关,但如果有人能填写我这里缺少的内容,我将不胜感激,即使只是为了提供信息。

编辑

在发表这篇文章后,我突然想到,改变npm包的位置可能会给用npm安装-g npm更新npm带来问题,我认为这是进行更新的建议方法。我见过的另一个解决方案是使当前用户成为默认包位置的所有者,但这对我来说似乎有点愚蠢,并且不适用于多用户设置。有人知道更好的解决办法吗?整个npm设置似乎有点像第22条军规...

封瑞
2023-03-14

尝试运行哪个npm,然后sudo哪个npm,以查看哪个被视为全局安装并删除另一个。然后将环境指向现有的npm。

李谦
2023-03-14

对于某些Linux发行版(Debian/Ubuntu和RedHat/CentOS),发行版提供的最新节点版本可能落后于稳定版本。下面是NodeSource关于获取最新节点的说明。

然后,您可以通过运行sudo npm i-g安装最新的npmnpm@latest。

 类似资料:
  • 我在N主页看到两个版本ode.js下载如下 我应该使用哪一种,有什么区别?

  • 在我的 amd5700g 上安装了一个 ubuntu22.04 Desktop 发现 linux 内核版本是 6.2.0 但是安装的 ubuntu22.04 Server 版本的 linux 内核是 5.15.0 版本 这个差异是因为 desktop 和 server 版本引起的吗? 但是从我之前的观察发现,好像即便在同一个 ubuntu 版本下(比如 18、20、22)都是 desktop 或者

  • 这里是SQL初学者,在我的大学课程中,我们有以下模式。 学生(snum:整数,sname:字符串,专业:字符串,级别:字符串,年龄:整数) 类(名称:字符串,meets_at:字符串,房间:字符串,fid:整数) 已注册(snum:整数,cname:字符串) 教员(fid:整数,fname:字符串,deptid:整数) 其中一个练习如下: 找出同时参加两个班的所有学生的名字。 下面是它的SQL语句

  • 问题内容: 我从java2s.com下载了servlet-api.jar的副本。我怎么知道它是什么版本?该网站上没有参考。 编辑 啊。道歉。当我双击得到的jar中的MANIFEST.MF文件时,我应该已经列出了写字板输出的内容: 如您所见,它没有告诉我版本,因此是问题所在。 问题答案: 您可以从META-INF中获取它,也可以使用Win rar或类似的归档工具来探索jar文件的内容。 我个人更喜欢

  • 我用LWJGL编写了一个简单的程序。问题是每次我尝试运行应用程序时,都会遇到这个错误: 该错误具有误导性,因为我确实调用了< code > glfwMakeContextCurrent(window)和< code > GL . create capabilities()。 我将错误跟踪到似乎当我删除这个和行时,应用程序将运行。 我不理解的是为什么会发生这种情况,因为我在中确实有一个GLFW 3.

  • 为什么它不打印“processTextPosition:ContainsKey”?