无法安装NodeJ:/ usr / bin / env:节点:没有这样的文件或目录


302

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

我已经阅读了有关Ubuntu的不同执行方式的信息(问题?),因此,为了安装它,我做了以下操作:

sudo apt-get install npm

sudo npm install -g grunt-cli

在输入咕unt声之后,我得到了错误:

/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

我该怎么办?

Answers:


793

进行符号链接可以解决此问题:

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

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


97
sudo apt-get install nodejs-legacy也会创建此链接,请参阅packages.debian.org/sid/nodejs-legacy上的
anatoly techtonik

1
symlink解决了该问题,并节省了大量开发时间。谢谢!
法尔扎德YZ 2015年

此修复程序严重可以挽救生命。特别是,如果您遵循此处的修复权限指南docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

谢谢!这节省了我的下午时间,试图在Google Cloud Linux上设置节点应用程序。
jovan

1
您应该使用which node以便获得到节点的正确路径。因此,命令将是ln -s "$(which node)" /usr/bin/node
technogeek1995

117

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

因此,在终端中调用的应用程序名称为nodejsand not node。这就是为什么有必要为一个符号简单地将所有收到的命令nodenodejs

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

6
如果您收到“ ln:无法创建符号链接'/ usr / bin / node'”错误
Suraj Dubey 2016年

ln -s / usr / bin / nodejs / usr / bin / node
rd_ '18

54

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

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

1
只是小费;将您的代码行缩进4个空格;)也不n是与Node.JS关联的命令。
Qix-蒙尼卡(Monica)

@David基于NPM上的软件包说明:“交互式管理所有节点版本”
frdmn

为我解决了这个问题
评论家

我复制一个laravel项目从windowsubuntu 16.04laravel mix与有问题的npm run watch,这解决方案为我现在的问题了
AN

29

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

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

这可以解决问题




9

我发现这通常是一个错误命名的错误,如果您是从软件包管理器安装的,则bin可能称为nodejs,因此您只需要像这样对其进行符号链接

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

1
除了添加负面反馈外,在评论中让我知道这是什么问题,因此我可以为您提供帮助。因为创建符号链接没有什么错,特别是如果它可以帮助您更好地管理事物。
艾哈迈德·阿威斯

1
我个人更喜欢这种方法。很干净
Muhammad Gelbana '16

8

如果您已经安装了nodejs(使用进行检查which nodejs)并且不想安装其他软件包,则可以以root用户的身份进行:

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

这是正确的Debian方法。
Tonin

6

当我使用口香糖时,我得到了这个错误。

~$ gulp

/ usr / bin / env:“节点”:没有这样的文件或目录

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

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

这对我有用。


5

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

使用此命令,which node我找到了路径,但是为了简化工作,可以运行此命令。

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

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


5

有两种解决方案:

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

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

b)创建一个指向您路径中的“ / usr / bin”的符号链接

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

希望对您有所帮助。


4

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

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

安装时会出现此建议sudo apt-get install nodejs

因此,其他一些已知工具(我不知道它的作用。虽然在ubuntu存储库中是已知的,但默认情况下未在16.04中安装该工具)占用了该命名空间。

如果Ubuntu提供了一个“干净”解决此问题的建议,如果不是通过手工完成,该软件包会做什么的话,那就太好了。(碰撞仍然是碰撞……如果+何时发生)


1
@ tom-hale答案是Ubuntu的解决方法。您使用替代方法来指定正确的节点
kervin 2016年


2

对于我的情况下链接 不要 工作如下

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

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

-#!/ usr / bin / env节点

+#!/ usr / bin / env nodejs


2

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

在终端中:

  1. 清理整个NPM缓存:

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

    sudo n stable

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

node -v


0

对我来说,已接受的答案尚未奏效。我按照这里的建议开始:

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

完成此操作后,出现以下错误:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = require('update-notifier')({pkg})^^^

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

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

然后我做了:

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

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.