由于与其他包名称冲突,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已经安装在系统上,但解释器名称不同?


当前回答

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/

其他回答

可以在/usr/bin中创建link ln -s nodejs节点 希望这能解决你的问题。

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

下面是我使用的另一种方法,因为我喜欢用n来方便在节点版本之间切换。

在一个新的Ubuntu系统上,首先安装“system”节点:

curl -sL https://deb.nodesource.com/setup | sudo bash -

然后全局安装n个模块:

npm install -g n

由于系统节点是先安装的(如上),替代系统可以用来干净地指向n提供的节点。首先确保替代系统没有用于node的东西:

update-alternatives --remove-all node

然后添加n提供的节点:

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

接下来添加系统提供的节点(使用curl安装的节点):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

现在使用交互菜单选择n提供的节点(从以下命令提供的菜单中选择/usr/local/bin/node):

update-alternatives --config node

最后,由于/usr/local/bin在PATH中的优先级通常高于/usr/bin,如果要使替代系统节点有效,必须创建以下别名(在.bashrc或.zshrc中输入);否则,在/usr/local/bin中安装n的节点总是优先:

alias node='/usr/bin/node'

现在,您可以轻松地在n <所需节点版本号>的节点版本之间进行切换。

在Linux Mint 17上,我尝试了两种解决方案(创建符号链接或使用nodejs-legacy包)都没有成功。

唯一对我有用的是使用Chris Lea的ppa:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

此安装的节点版本为10.37和npm 1.4.28。在那之后,我可以在全球范围内安装包。

简单的解决方案

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

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