ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我已经阅读了关于这样做的 Ubuntu different way (issues?),所以这是我为安装它所做的:

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

我应该怎么办?

Ubuntu 20.04 不会出现此问题。 sudo apt-file find /usr/bin/node 列出 nodejs: /usr/bin/node。也就是说,安装 nodejs 软件包会安装预期的 node 可执行程序。

f
fedorqui

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

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

(我的感谢和 +1 票给 bodokaiser's answer)。


sudo apt-get install nodejs-legacy 也创建此链接,请参阅 packages.debian.org/sid/nodejs-legacy 处的说明
符号链接解决了这个问题并节省了大量的开发时间。谢谢!
这个修复真的是一个救命稻草。特别是,如果您遵循此处的修复权限指南 docs.npmjs.com/getting-started/fixing-npm-permissions
谢谢!这节省了我一个下午,试图在谷歌云 Linux 上设置一个节点应用程序。
您应该使用 which node,以便获得节点的正确路径。所以命令是 ln -s "$(which node)" /usr/bin/node
R
Raedwald

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

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

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

Q
Qix - MONICA WAS MISTREATED

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

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

只是一个提示;将代码行缩进 4 个空格;)另外,n 不是与 Node.JS 相关联的命令。
@David 基于 NPM 上的包描述:“交互式管理您的所有节点版本”
为我解决了问题
我将一个 laravel 项目从 windows 机器复制到 ubuntu 16.04 并且 laravel mix 遇到了 npm run watch 问题,这个解决方案对我有用,现在问题消失了
M
Mohammad Rajabloo

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

sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm

第一个命令为节点创建符号链接

第二个命令为 npm 创建一个符号链接


我更喜欢 /usr/local/bin/node
这可行,但是如果您打算使用 nvm 来实际管理不同的版本,那么每次您将 nvm 转换为不同的版本时都必须重复此操作。
这项工作,我使用 nvm 安装了节点,并且在运行在节点上运行的 laravel-echo-server 时遇到问题。 2小时后你救了我。谢谢
s
shabeer90

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

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

这可能会解决问题


E
Emile Bergeron

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

sudo apt-get install nodejs-legacy

P
Prabhu Nandan Kumar

做就是了

$ sudo apt-get install nodejs-legacy

它将开始工作。


T
Tom Hale

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

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

这是正确的 Debian 方式。
这对我有用。 ubuntu 20,节点 10 npm 8
A
Ahmad Awais

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

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

不要添加负面反馈,而是在评论中让我知道出了什么问题,这样我可以帮助你。因为创建符号链接没有任何问题,特别是如果它可以帮助您更好地管理事情。
我个人更喜欢这种方法。它很干净。
S
Stephen Rauch

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

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

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

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


P
Philip Kirkbride

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

~$ gulp

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

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

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

这对我有用..


我有同样的问题,但解决方案没有奏效。我使用“node -v”命令检查是否安装了节点,发现它丢失了。一定是因为我最近从10.04升级到了ubuntu 20.04。
P
Pavel

有两种解决方案:

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

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

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

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

我希望它有所帮助。


F
Frank Nocke

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

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

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

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

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


@tom-hale 的答案是 Ubuntu 的方式。您使用替代项来指定正确的节点
u
u32i64

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

在终端中:

清理整个 NPM 缓存: $ sudo npm cache clean -f sudo npm install -gn 安装 Node.js 的最新稳定版本: sudo n stable

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

node -v

工作!伟大的..
I
Irfan wani

如果它是使用 snap 安装的,

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

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

C
Community

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

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

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

-#!/usr/bin/env 节点 +#!/usr/bin/env nodejs


S
Shalauddin Ahamad Shuza

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


B
Blackbam

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

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: Block-scoped declarations (let, const,函数、类)在 Object.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