无法安装NodeJs: /usr/bin/env: node:没有这样的文件或目录

我正在尝试将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

我该怎么办?

310561 次浏览

使用符号链接可以解决这个问题:

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

(感谢并+1票给bodokaiser的回答)。

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

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

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

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

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

如果你能在ubuntu终端上使用nodejs命令访问node,那么这个问题可以简单地使用 -使用

创建nodejs和node的符号链接

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

这或许能解决问题

在我的情况下,安装nodejs-legacy解决了这个问题。

sudo apt-get install nodejs-legacy

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

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

如果你已经安装了nodejs(使用which nodejs检查),并且不想安装另一个包,你可以作为root:

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

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

由于与另一个包冲突,可执行文件从 Ubuntu存储库被称为nodejs而不是node。把这个放进去

当安装sudo apt-get install nodejs时,会出现这个建议。

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

如果Ubuntu能提供一个如何“干净地”解决这个问题的建议,如果不是手工解决这个包的话,那就太好了。(碰撞仍然是碰撞……如果+何时发生)

sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>

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

~$ gulp

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

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

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

这对我有用。

只做

$ sudo apt-get install nodejs-legacy

它将开始工作。

对于我的案例,如下所示链接做了 工作

Ln -s /usr/bin/nodejs /usr/bin/node

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

- # !/usr/bin/env节点

+ # !/usr/bin/env nodejs

只要用这个命令重命名命令或文件名ln -s /usr/bin/nodejs /usr/bin/node即可

取决于你如何安装你的节点,大多数时候它可能不在/usr/bin/中,在我自己的情况下,我使用nvm来安装,所以我的节点在。/nvm/versions中。

使用这个命令which node我找到了路径,但为了使工作更容易,你可以运行这个命令。

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

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

有两种解决方案:

a)设置你的PATH变量包括"/usr/local/bin"

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

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

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

我希望这能有所帮助。

对我来说,公认的答案还不奏效。我的开头是这样建议的:

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

这样做之后,我得到以下错误:

< p > / usr /地方/ lib / node_modules / npm / bin / npm-cli.js: 85 Let notifier = require('update-notifier')({pkg}) ^ ^ ^ < / p >

SyntaxError:块范围的声明(let, const, function, class) 在严格模式之外尚不支持 runinthiscontext (vm.js:53:16) 在模块。_compile (module.js 374:25): at Object.Module._extensions. js (module.js:417:10) 在模块。负载(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 < / p >

解决方案是从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

遵循这些命令来解决问题。

在终端中:

  1. 清理整个NPM缓存:

    $ sudo npm cache clean -f
    
  2. sudo npm install -g n
    
  3. Install the latest stable version of Node.js:

    sudo n stable
    

Now the latest version of Node.js was installed. Check the version using:

node -v

如果你正在使用nvm节点版本管理器,使用这个命令创建一个符号链接:

sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
  • 第一个命令为node创建一个符号链接
  • 第二个命令为npm创建一个符号链接

如果是用snap安装的,

sudo ln -sfn /snap/node/current/bin/node /usr/bin/node
sudo nautilus
以admin身份打开文件管理器。进入/usr/bin,搜索节点。这可能是坏链接,所以删除它。不,试着安装你的软件包。 这可能有用-对我有用

7年过去了,这些问题仍然存在。

好吧,我的问题是,这是相似的,但不完全相同。

当我接到詹金斯的命令时

SSH root@xxx.xxx.xxx.xxx "pm2 restart app"

then error /usr/bin/env Node No该文件或目录

下面是我的解决方案:

在服务器端xxx.xxx.xxx.xxx

它重新链接/usr/bin/node

< p >: 我删除现有的一个命令&;rm -f /usr/bin/node&;

第二:< p > 我用这个命令创建了新的链接 ln -s /root/.nvm/versions/node/v14.17.4/bin/node /usr/bin/node"

节点版本取决于您的安装。希望它有所帮助。

这个错误的底线是链接的节点。

对于那些已经使用nvm安装了NodeJS的人。

如果你像我一样安装、卸载、重新安装了一些版本,你只需要这样做:

NVM使用v14.21.1

或者你使用的任何版本。

这将重新创建到nodenpm命令的链接,这些链接在你的“清理”过程中丢失了:D