329

我正在尝试将 nodeJs 安装到我的 Ubuntu 14.04 中以使用 GruntJs。

我已经阅读了有关Ubuntu的不同处理方式(问题?),所以这就是我为了安装它所做的:

sudo apt-get install npm

sudo npm install -g grunt-cli

之后输入 grunt 我得到了错误:

/usr/bin/env: node: No such file or directory

所以,我试过:

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

sudo apt-get install -y nodejs

sudo apt-get update

再试一次,仍然得到错误,我试过了:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

我收到了这条消息:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

我确实尝试了清理以防万一:

sudo apt-get autoremove

但是不,错误仍然存​​在:当我输入 grunt 我仍然得到/usr/bin/env: node: No such file or directory

我应该怎么办?

4

19 回答 19

827

做一个符号链接解决了这个问题:

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

(我的感谢并对bodokaiser 的回答+1 投票)。

于 2014-10-12T01:22:10.997 回答
125

问题不在于节点的版本。相反,这是在 Ubuntu 中默认安装 NodeJS 的方式。在 Ubuntu 中运行 Node 应用程序时,您必须运行nodejs somethign.js而不是node something.js

所以终端中调用的应用程序名称是nodejs而不是node。这就是为什么需要一个符号链接来简单地转发所有接收node到的命令nodejs

sudo ln -s /usr/bin/nodejs /usr/bin/node
于 2014-12-11T05:39:43.513 回答
61

我认为你应该升级最新的节点版本

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
于 2014-10-12T01:23:57.120 回答
51

如果您使用的是nvm节点版本管理器,请使用此命令创建符号链接:

sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
  • 第一个命令为node
  • 第二个命令为npm
于 2020-07-11T13:50:40.563 回答
29

如果您能够使用 nodejs 命令访问 ubuntu 终端上的节点,则可以使用以下方法简单地解决此问题 - 创建 nodejs 和节点的符号链接使用

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

这可能会解决问题

于 2016-02-12T21:13:46.260 回答
24

就我而言,安装 nodejs-legacy解决了这个问题。

sudo apt-get install nodejs-legacy
于 2016-03-27T09:44:42.440 回答
11

做就是了

$ sudo apt-get install nodejs-legacy

它将开始工作。

于 2017-06-07T10:27:15.293 回答
9

我发现这通常是一个命名错误,如果你从包管理器安装你的 bin 可能被称为 nodejs 所以你只需要像这样符号链接它

ln -s /usr/bin/nodejs /usr/bin/node
于 2016-07-29T09:54:18.947 回答
9

如果您已经安装了 nodejs(检查which nodejs)并且不想安装另一个包,您可以以 root 身份:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
于 2016-08-03T04:35:04.573 回答
6

根据您安装节点的方式,大多数情况下它可能不在 /usr/bin/ 中,在我自己的情况下,我使用 nvm 进行安装,因此我的节点位于 ./nvm/versions 中。

使用此命令which node我找到了路径,但为了使工作更轻松,您可以运行此命令。

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

上面的命令将获取您的节点的位置并为您创建一个链接。

于 2018-06-03T00:15:05.487 回答
6

当我使用 gulp 时,我得到了这个错误。

~$ gulp

/usr/bin/env: 'node': 没有这样的文件或目录

这是通过执行以下命令删除的,您必须记住 /usr/bin 目录具有所有权限。

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

这对我有用..

于 2017-04-30T08:55:00.587 回答
5

有两种解决方案:

a) 将 PATH 变量设置为包含“/usr/local/bin”

export PATH="$PATH:/usr/local/bin"

b) 创建一个指向“/usr/bin”的符号链接,它已经在你的 PATH 中

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

我希望它有所帮助。

于 2018-09-28T08:47:36.127 回答
4

虽然ln -s是最简单的解决方法,但有一点解释:

由于与另一个包冲突,来自 Ubuntu 存储库的可执行文件称为 nodejs 而不是 node。在运行软件时请记住这一点。

在安装sudo apt-get install nodejs.

所以其他一些已知的工具(我不知道它是做什么的。虽然 ubuntu 存储库知道它,但默认情况下它不会在 16.04 中安装)占用该命名空间。

如果 Ubuntu 提供了一个如何“干净地”解决这个问题的建议,如果不是通过手工来解决这个包会做什么,那就太好了。(碰撞仍然是碰撞......如果+何时发生)

于 2016-10-28T14:46:50.877 回答
4

请按照以下命令解决问题。

在终端中:

  1. 清理整个 NPM 缓存:

    $ sudo npm cache clean -f
    
  2. sudo npm install -g n
    
  3. 安装最新的稳定版 Node.js:

    sudo n stable
    

现在安装了最新版本的 Node.js。使用以下命令检查版本:

node -v
于 2019-05-21T09:43:10.367 回答
2
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
于 2017-03-24T11:22:36.407 回答
2

对于我 案例链接不起作用 如下

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

但是您可以以 root 身份打开 /usr/local/bin/lessc,并将第一行从 node 更改为 nodejs。

-#!/usr/bin/env 节点

+#!/usr/bin/env nodejs

于 2017-12-08T11:00:16.920 回答
0

只需ln -s /usr/bin/nodejs /usr/bin/node通过此命令重命名命令或文件名

于 2018-04-29T19:44:12.343 回答
0

对我来说,接受的答案还没有奏效。我按照这里的建议开始:

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

执行此操作后,我收到以下错误:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 让通知器 = 要求('update-notifier')({pkg})^^^

SyntaxError:在 Object._compile (module.js:374:25) 的 export.runInThisContext (vm.js:53:16) 的严格模式之外尚不支持块范围的声明(let、const、函数、类)。 Module._extensions..js (module.js:417:10) 在 Module.load (module.js:344:32) 在 Function.Module._load (module.js:301:12) 在 Function.Module.runMain ( module.js:442:10) 在启动时 (node.js:136:18) 在 node.js:966:3

解决方案是从https://nodejs.org/en/download/下载最新版本的节点。

然后我做了:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

现在更新终于成功了:npm -v从3.2.1改成了6.4.1

于 2019-01-14T17:32:45.520 回答
0

如果它是使用 snap 安装的,

sudo ln -sfn /snap/node/current/bin/node /usr/bin/node

于 2021-08-24T19:54:02.723 回答