节点永久:/usr/bin/env:节点:没有那个文件或目录

109

我已经使用以下命令安装了nodejs:

apt-get install nodejs

然后我使用以下命令安装了npm:

apt-get install npm

然后我使用以下方式安装了forever:

npm install forever -g

现在我进入了我的项目/var/www/myproject

尝试运行forever start server.js

然后我会收到以下消息:

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

有人可以告诉我发生了什么吗?


1
我遇到了这个错误,我正在使用Node版本管理器。 - munchschair
3个回答

274

编辑:截至2018年12月,这已不再是正确的方法。请参见其他两个答案。

您需要将nodejs可执行文件创建符号链接到node sudo ln -s "$(which nodejs)" /usr/local/bin/node 这样做的原因是当您执行"apt-get install node"时,它会安装一个无关的软件包,所以他们必须选择一个不同的名称以避免冲突。


4
"$(which nodejs)"是你要粘贴的代码,我只需要复制粘贴吗?" - Marc Rasmussen
11
"$(which nodejs)"会获取nodejs可执行文件的路径。当你将某些内容放在"$()"内时,它会被执行并插入到包含命令中。 - chedabob
2
@chedabob 我也遇到了同样的问题,但当我运行你的命令时,我还没有解决它。这时我得到了“ln: failed to create symbolic link ‘/usr/bin/node’: File exists”的错误提示。 - DASADIYA CHAITANYA
@dasadiya-chaitanya 在这种情况下,请确保现有文件通过运行以下命令指向正确的节点可执行文件。 ls -lart /usr/bin/node。如果符号链接没有指向正确的二进制文件,则删除它。然后重新运行以下命令:sudo ln -s "$(which nodejs)" /usr/bin/node - brownmamba
@brownmamba 我已经从我的角度修复了它,但不是按照你的方式,最终还是谢谢。 - DASADIYA CHAITANYA
4
在Debian和Ubuntu上,有一个名为nodejs-legacy的软件包提供符号链接。您不应该手动创建它。使用apt-get install nodejs-legacy是解决问题的正确方式,请参见下面的答案。 - Clément Schreiner

44

虽然被接受的答案修复了问题,但至少在Debian Jessie及以上版本和Ubuntu 14.4及以上版本1中,正确的方法是安装nodejs-legacy

apt-get install nodejs-legacy
原因在于Debian已经提供了一个名为/usr/bin/node的软件包(node),而nodejs的二进制文件需要安装到/usr/bin/nodejs中。 nodejs-legacy这个软件包提供了从/usr/bin/nodejs/usr/bin/node的符号链接(并与node软件包冲突)。
来源:[CTTE #614907] Resolution of node/nodejs conflictDebian bug #614907: node: name conflicts with node.js interpreter

这是在Debian/Ubuntu +1上的正确方式,对于那些不熟悉该操作系统的人来说是很好的上下文。 - akahunahi
1
这个完全破坏了npm,SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode,即使卸载旧版本并重新安装npm也会出现相同的错误。 - Tcll
继续我的上一个评论,这个答案修复了当前答案破坏的内容,我能够继续使用@Shantanu提供的答案。 - Tcll
请不要这样做,它会破坏您的npm安装。 - Sebastian

22

如果你更新到最新的node版本会更好

  1. sudo npm cache clean -f
  2. sudo npm install -g n
  3. sudo n stable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接