在Ubuntu中使用Node Package Manager无法安装软件包

525
在Ubuntu上,NodeJS解释器的名称(node)已被改为nodejs,因为与另一个软件包存在名称冲突。以下是Debian的自述文件所说的内容:

Node.js解释器命令的上游名称是“node”。 在Debian中,解释器命令已更改为“nodejs”。

这样做是为了防止命名空间冲突:其他命令在其上游中使用相同的名称, 如来自“node”软件包的ax25-node。

调用Node.js作为shell命令的脚本必须更改为使用“nodejs”命令。

然而,使用nodejs安装使用npm的软件包会出现问题。 安装软件包时会失败并显示以下错误:

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
我该如何让npm知道系统中已经安装了nodejs,但解释器的名称不同?

29
你可以尝试在/usr/bin中运行ln -s nodejs node,但这有点像是一种黑客行为。 - vbo
1
@vbo,你可以将其添加为答案 - 它解决了问题! - Himel Nag Rana
2
@HimelNagRana 我有另一个(更好,被接受的)答案。我的初始评论也被转化为答案(https://dev59.com/7WEi5IYBdhLWcg3wjs1j#21168305)。 - vbo
4
使用 NVM 安装和管理 Node.js 版本,https://github.com/creationix/nvm,它简单方便! - Unitech
2
我强烈推荐使用此解决方案:https://dev59.com/7WEi5IYBdhLWcg3wjs1j#38325376,以便随时控制节点和npm版本,并用于任何用途。 - Rémi Becheras
19个回答

5

您的系统无法检测到Node.js二进制文件的路径。

1. 输入命令“which node”

2. 然后将node软链接到nodejs

ln -s [the path of nodejs] /usr/bin/node 

我假设/usr/bin已经被添加到您的执行路径中。然后,您可以通过在命令行中键入“node”或“npm”来测试,现在应该一切正常。

4

卸载您当前安装的任何 Node 版本

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

安装 nvm(Node Version Manager)https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

现在,您可以安装任何版本的node,并在不同版本之间切换。

请注意,使用上述方法 nvm 的任何人都应该知道,nodejs-legacy 包的版本是 v0.10.25。(或者至少在我尝试时是这样的。) - JaredH

3
我通过取消与ax25-node软件包链接的/usr/sbin/node来解决了问题,然后使用以下命令行创建了到nodejs的链接。
sudo ln -s /usr/bin/nodejs /usr/bin/node

因为像karma这样的程序包不能与nodejs名称一起使用,但是可以通过将karma脚本的第一行从node更改为nodejs来解决此问题,但我更喜欢一劳永逸地解决此问题。


1
问题不在安装程序中
将nodejs替换为node或将路径从/usr/bin/nodejs更改为/usr/bin/node

1
对我来说,解决方法是删除node*包和npm包。然后进行全新安装,步骤如下:
sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install

sudo apt-get autocleansudo apt-get install autoclean 做的是同样的事情。 - m3nda

1

0

遇到了相同的问题,以下步骤对我有用。

在您的系统上安装curl,然后运行NVM安装程序脚本。

sudo apt install curl 
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

加载环境

source ~/.profile 

安装支持的Node.js版本。

nvm install 16.15.1

确认安装

node -v

0

你可以在/usr/bin中创建一个名为ln -s nodejs的链接,希望这可以解决你的问题。


0
node -v  // first check it's install or not
npm -v
sudo apt install npm
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash –
sudo apt-get install nodejs

然后检查

node -v or node –version
npm -v or npm –version

或者您可以删除 package.lock json 文件 / node_modules,然后运行 npm i

我希望它能正常工作

步骤:https://www.geeksforgeeks.org/installation-of-node-js-on-linux/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接