节点:找不到命令

Mat*_*oli 50 apt nodejs npm

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

$ node --version
zsh: command not found: node
$ nodejs --version
v0.10.15
Run Code Online (Sandbox Code Playgroud)

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

此外:

$ npm
zsh: command not found: npm
Run Code Online (Sandbox Code Playgroud)

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

小智 50

我同意,这有点问题,但我不知道为什么会这样。

修复

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

ln -s /usr/bin/nodejs /usr/bin/node
Run Code Online (Sandbox Code Playgroud)

问题

我发现很多安装 Nodejs 的指南(这里这里)都有类似的代码来测试安装是否正确。所以本质上创建一个简单的服务器,如下所示:

// 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/');
Run Code Online (Sandbox Code Playgroud)

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

node hello_node.js
Run Code Online (Sandbox Code Playgroud)

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

  • 有趣的提示:有一个 [nodejs-legacy](https://apps.ubuntu.com/cat/applications/nodejs-legacy) 包提供符号链接,据称是为了与仍然依赖它的“遗留代码”兼容。 (5认同)

kir*_*iri 45

node包与 NodeJS 无关。有关节点的信息,请参见此处安装节点

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


你应该安装 nodejs 安装 nodejs 包裹。

sudo apt-get install nodejs
Run Code Online (Sandbox Code Playgroud)

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

原因node不起作用可能是因为node与上面链接的原始包冲突。


如果你想 npm 安装 npm,您还必须安装它。

sudo apt-get install npm
Run Code Online (Sandbox Code Playgroud)

  • 我知道`node` 包,但是我不明白为什么名称包对命令行工具有任何影响。例如,我不安装`php`,而是安装`php5-cli`。但是感谢您的回答,我不确定手动安装 `npm` 是否会出现问题,显然不是。 (4认同)
  • 安装 `nodejs-legacy` 包可以让你使用 `node` 或 `nodejs`。 (2认同)

小智 26

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

apt-get install nodejs-legacy
Run Code Online (Sandbox Code Playgroud)

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

  • 有用。我认为这比@jlouzado 的回答要好。 (2认同)