节点:找不到命令


46

我不明白为什么node命令不起作用,而nodejs起作用:

$ node --version
zsh: command not found: node
$ nodejs --version
v0.10.15

我尝试过apt-get install nodejs,但是已经安装了最新版本。

而且:

$ npm
zsh: command not found: npm

我以为npm它包含在NodeJS> 0.10中?


可能这个帖子解决您的问题[Stackoverflow] [1] [1]:stackoverflow.com/questions/13593902/node-command-not-found
Ahmed Al-battashi 2014年

@ AhmedAl-battashi它没有帮助,我已经看过了。是的NodeJS安装,nodejs是在PATH,但nodenpm没有提供,我不能在任何地方找到他们我的系统上。
Matthieu Napoli 2014年

2
我不确定,但我确实记得,node重命名二进制文件的原因是因为它与一个名为node(业余分组无线节点程序)的软件包相冲突。
yjwong 2014年

你确定你正在寻找node,而不是nodejsnode不是你想的那样。
Braiam 2014年

node我所看过的每个教程都使用@Braiam
Matthieu Napoli

Answers:


43

node软件包与NodeJS无关。请参阅此处以获取有关node的安装节点信息:

业余分组无线节点程序(过渡软件包)


您应该安装该nodejs 安装nodejs软件包。

sudo apt-get install nodejs

然后将其与nodejs命令一起使用。

之所以node不起作用,可能是因为node与上面链接的原始程序包冲突。


如果需要npm 安装npm,还必须安装它。

sudo apt-get install npm

3
我知道该node程序包,但是我不明白为什么名称程序包会对命令行工具产生任何影响。例如,我没有安装php,而是php5-cli。但是,感谢您的回答,我不确定手动安装npm是否会出现问题,显然不是。
Matthieu Napoli

2
安装nodejs-legacy软件包后,您可以使用 nodenodejs
凹槽复数

48

我同意,这是一个问题,但是我不知道为什么会这样。

修复

首先,只需从被调用node指向nodejs二进制文件创建一个符号链接。

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

问题

我发现了一些安装Node.js的指南(此处此处),所有指南都有相似的代码来测试安装是否正确。因此,基本上创建一个简单的服务器,如下所示:

// hello_node.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

然后在nodejs中使用以下命令运行它:

node hello_node.js

然后,当我尝试使用npm安装某些东西时,它失败并报告了相同的node not found消息。


我有同样的问题,sudo apt-get install npm,然后按照@jlouzado推荐完成工作。现在运行良好
user615274

5
有趣的提示:有一个提供符号链接的nodejs-legacy软件包,据说是为了与仍依赖它的“旧版代码”兼容。
西蒙

1
@Simón我认为这比建立符号链接更好。
凹槽复数

因此,现在我算了一下,如果我使用Node.js进行任何操作,都必须安装3个软件包。我一直在尝试安装这个Node.js库一个小时。
sudo

我无法安装,asciicast2gif因为它在安装过程中运行node install.js并且收到错误消息sh: 1: node: not found。这样就解决了。
Vinayak

26

就像@ minerz029已经说过的那样,与node软件包存在冲突。但是,如果您仍然需要node命令(因为脚本仅node用于示例),则正确的方法是安装nodejs-legacy软件包:

apt-get install nodejs-legacy

而不是自己创建符号链接(尤其是不在中/usr/bin/)。这将为nodenodejs 提供一个命令。


2
有用。我认为这比@jlouzado的答案更好。
肖恩·谢

除非您在安装OS时经常“从头开始” ....最好让apt管理bin中的符号链接。谢谢!
mike

2

尝试这个

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

sudo apt-get install -y nodejs

:)


2
您为什么不安装最新版本?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
karel

setup_6.x稳定
穆哈辛·巴布

Node.js版本8的LTS政策是,它现在正在等待LTS,它将在2017年10月开始成为LTS,在2019年4月开始维护,在2019年12月结束维护。有关更多信息看到这个答案表:askubuntu.com/questions/626383/...
卡雷尔


0

nvm用户的快速修复。我用nvm(节点版本经理)和我使用的npm命令,我必须始终之前发出npm此命令nvm use 0.x(替换0.x0.110.10例如,你想使用的版本)。


0

正如minerz029已经提到的那样,由于先前使用该名称的另一个软件包,该nodejs软件包的某些版本将不提供node二进制文件。该解决方案非常简单,只需按照Node自身网站上的安装步骤进行即可:

通过程序包管理器安装Node.js | 基于Debian和Ubuntu的Linux发行版

目前,这些步骤是:

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

但是最好检查源链接,以确保您使用的是最新版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.