由于与其他包名称冲突,Ubuntu上的NodeJS解释器名称(node)被重命名为NodeJS。这是自述。Debian说:

node .js解释器命令的上游名称是“node”。 在Debian中,解释器命令已更改为"nodejs"。 这样做是为了防止名称空间冲突:使用其他命令 在其上游相同的名称,如ax25-node中的“node” 包中。 作为shell命令调用Node.js的脚本必须改为 使用“nodejs”命令。

然而,使用nodejs会搞砸使用npm安装包的过程。软件包安装失败,报错如下:

Sh: 1: node: not found 此失败可能是由于使用了遗留的二进制"node" 更多解释请阅读/usr/share/doc/nodejs/ readmeDebian

我如何让npm理解nodejs已经安装在系统上,但解释器名称不同?


当前回答

卸载您拥有的任何节点版本

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

安装nvm(节点版本管理器)https://github.com/creationix/nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

现在您可以安装您想要的任何版本的节点,并在版本之间进行切换。

其他回答

我修复了它解除链接/usr/sbin/node(链接到ax25-node包),然后我在命令行上使用这个创建了一个链接到nodejs

sudo ln -s /usr/bin/nodejs /usr/bin/node

因为像karma这样的包不能与nodejs名称一起工作,但是将karma脚本的第一行从node更改为nodejs,但我更喜欢一次性解决这个问题

面对同样的问题,下面的步骤对我有用。

在系统上安装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

简单的解决方案

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs

您可以通过更改setup_x来指定版本。X值,例如setup_5.x

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

或者你可以去掉包装。锁定json文件/ node_modules然后运行NPM I

我希望它能正常工作

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

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

sudo apt-get install nodejs-legacy
source ~/.profile

将接受的答案与源~/结合起来。概要文件来自已折叠的注释和一些清理命令之前。很可能你还需要sudo apt-get install npm after。