永远节点/ usr/bin/env:node:没有这样的文件或目录

Mar*_*sen 106 node.js forever

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

apt-get install nodejs
Run Code Online (Sandbox Code Playgroud)

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

apt-get install npm
Run Code Online (Sandbox Code Playgroud)

然后我永远安装使用:

npm install forever -g
Run Code Online (Sandbox Code Playgroud)

现在我去我的项目 /var/www/myproject

并试图运行 forever start server.js

然后我收到以下消息:

/usr/bin/env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)

谁能告诉我发生了什么事?

che*_*bob 269

编辑:截至2018年12月,这已不再是正确的方法.看到另外两个答案.

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

  • "$(which nodejs)"获取nodejs可执行文件的路径.当您在"$()"中放入某些内容时,它会被执行,然后插入到包含命令中 (11认同)
  • 什么是$(哪个nodejs)"是你粘贴的东西我应该复制粘贴或? (4认同)
  • 在Debian和Ubuntu上,有一个提供符号链接的"nodejs-legacy"包.你不应该手动做.`apt-get install nodejs-legacy`是解决问题的正确方法,请参阅下面的答案. (4认同)
  • @chedabob我遇到了同样的问题,但当我运行你的命令时我还没有解决它我得到了ln:无法创建符号链接'/ usr/bin/node':文件存在 (2认同)

Clé*_*ner 45

虽然接受的答案解决了问题,但正确的方法是这样做,至少对Debian Jessie和前锋以及Ubuntu 14.4和前进1来说是安装nodejs-legacy:

apt-get install nodejs-legacy
Run Code Online (Sandbox Code Playgroud)

原因是Debian已经有一个包(节点)提供/ usr/bin/node,而nodejs 节点二进制必须安装到/ usr/bin/nodejs中.

所述的NodeJS遗留包提供从/ usr /斌/的NodeJS到/ usr /斌/节点(和冲突与符号链接节点包).

来源:[CTTE#614907]节点/ nodejs冲突的解决Debian bug#614907:node:name与node.js解释器冲突


Sha*_*anu 15

如果您更新到最新的节点版本会更好

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n稳定