browserify错误/ usr / bin / env:节点:没有这样的文件或目录


85

我通过apt-get install和所有依赖项安装了节点js和npm,然后安装了browserify

npm install browserify -g

它经历了整个过程,看起来好像正确安装了,但是当我尝试按照此演练做一个简单的捆绑包时

我得到错误:

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

在此处输入图片说明


嗯,您应该检查节点可执行文件是否在/ usr / bin或/ usb / bin / env中,至少这是特定于操作的问题。您可以通过在本地安装browserify来解决此问题。
bodokaiser 2014年

我的browserfy可执行文件位于/ usr / local / bin /中,但是它是否在调用其他东西,这又弄乱了路径?
Eduardo Dennis

3
啊,您必须将nodejs符号链接到ubuntu上的节点。Ubuntu将节点安装为nodejs,那么您必须执行类似“ ln -s / usr / bin / nodejs / usr / bin / node”的操作,以便系统也将其找到为节点
bodokaiser 2014年

1
解决了它的问题:-PI在过去一个小时里一直在困扰我,您能不能以回答的形式接受?
Eduardo Dennis

1
很高兴它的工作尚不确定是否真的是这个问题,这就是为什么我首先评论的原因:)
bodokaiser 2014年

Answers:


246

一些Linux发行版不是将nodejs安装为“ node”可执行文件,而是将其安装为“ nodejs”。

在这种情况下,您必须手动链接到“节点”,因为在“节点”二进制文件之后编写了许多软件包。未链接到“ python”的“ python2”也会发生类似的情况。

在这种情况下,您可以进行简单的符号链接。对于Linux发行版,/usr/bin您可以在其中安装软件包二进制文件

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

5
不是Ubuntu 14.04的解决方案,因为它/usb/sbin/node是ax24节点(与nodejs不相关)。只是符号链接/usr/bin/node将无法正常工作,因为/usr/sbin/node首先出现在$PATH
Gareth 2014年

8
解决此问题的正确方法是使用update-alternatives。在这里看到我的答案stackoverflow.com/a/24592328/454615
airtonix

1
如果要破坏系统,那么采用二进制链接这样的符号链接是一个很好的习惯。
airtonix

是的,我注意到它确实以微妙的方式打破了它,您找到更好的解决方案了吗?
Eduardo Dennis

1
@EduardoDennis是的,使用update-alternatives。在这些确切情况下存在。
airtonix

52

新答案:

  1. 卸载通过系统软件包管理器安装的所有nodejs软件包(dnf,apt-get等),删除您在每次升级时都重新创建的任何愚蠢的符号链接(lol)。
  2. 安装NVM,
  3. 使用nvm安装nodejs:nvm install 6

旧答案:

关于创建符号链接或安装其他节点程序包的任何说法都是虚假的,而且是不可持续的。

解决此问题的正确方法是:

  1. 像您已经拥有的apt-get一样简单地安装nodejs包
  2. 用于update-alternatives指示您的nodejs二进制文件负责#!/usr/bin/env node

像这样:

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

现在,这在软件包升级,发行版升级等过程中变得可持续。


这是我的问题的解决方案stackoverflow.com/questions/26155795/...
阿龙卡梅尔

谢谢,很好的解决方案,使用符号链接的技巧是在网络上重复最多的一种,但是对我不起作用。
艾米莉亚·泰尔

现在实际的正确答案是在Linux上使用NVM,在Windows上使用Nodist。
airtonix '16

35

运行apt-get install nodejs-legacy

某些Linux发行版更改了node.js二进制名称,使其与许多node.js软件包不兼容。软件包nodejs-legacy提供了一个符号链接来解决此问题。


2
这是Ubuntu 14.04的解决方案,因为它/usb/sbin/node是ax24节点(与nodejs无关)。只是符号链接/usr/bin/node将不起作用,因为/usr/sbin/node首先出现于$PATH
Gareth

帮助我。谢谢!
Lapidus

apt-get install nodejs-legacy。表示对于Windows用户,“ apt-get”未被识别为内部或外部命令,可操作程序或批处理文件。
斯威夫特

7

您还可以使用NVMNodejs版本管理器安装Nodejs 。使用版本管理器有很多好处。其中之一就是您不必担心这个问题。


说明:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

一旦安装了必备软件包,就可以从项目的GitHub页面下拉nvm安装脚本。版本号可能有所不同,但是通常,您可以使用以下语法下载并安装它:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

这将下载脚本并运行它。它将把软件安装到您的主目录的子目录中~/.nvm。还将在~/.profile文件中添加必要的行以使用该文件。

要获得对nvm功能的访问权限,您需要注销并重新登录,或者可以获取〜/ .profile文件,以便您的当前会话了解更改:

source ~/.profile

既然已经安装了nvm,则可以安装隔离的Node.js版本。

要查找可用于安装的Node.js版本,可以键入:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

如您所见,在撰写本文时,最新版本是v0.11.14。您可以通过键入以下内容进行安装:

nvm install 0.11.14

通常,nvm会切换为使用最新安装的版本。您可以通过键入以下内容来明确告诉nvm使用我们刚刚下载的版本:

nvm use 0.11.14

使用nvm安装Node.js时,可执行文件称为node。您可以通过键入以下命令查看外壳当前正在使用的版本:

node -v

完整的教程可以在这里找到


是的,再加上一个环境版本管理器。尽管我们都是正确的方法,但绝对比我的答案好得多。我会说nvm更面向交互式工作站,而不是生产服务器(但我不明白为什么不能在那里使用它)……我个人更倾向于在生产中使用docker映像。
airtonix


0

在Linux中构建Atom时,我似乎遇到了同样的问题。

sudo apt-get install nodejs-dev

解决我的问题。希望对您有所帮助。


0

如果您不想进行符号链接,则可以执行此操作。在ubuntu工作

#!/usr/local/bin/node --harmony

和谐标签用于新的ECMAscript和谐


0
  1. 运行命令which node结果将是

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. 复制上面的路径,然后在步骤3中运行命令。

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node


-1

您必须调用“ nodejs”而不是“ node”。要验证这一点,请node -v在shell上键入:如果未找到任何内容,请尝试nodejs -v。如果显示的是版本号,则您应该使用的命令nodejs不是node。因此,您必须将脚本中的browserify调用从node更改为nodejs(如下所示):replace

#!/usr/bin/env node

#!/usr/bin/env nodejs

您可能还必须以超级用户身份打开脚本。

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.