【问题标题】:Cannot install NodeJs: /usr/bin/env: node: No such file or directory无法安装 NodeJs:/usr/bin/env:节点:没有这样的文件或目录
【发布时间】:2014-12-06 21:23:23
【问题描述】:

我正在尝试将 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 可执行程序。

标签: node.js ubuntu gruntjs npm-install node-modules


【解决方案1】:

如果是使用 snap 安装的,

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我更喜欢/usr/local/bin/node
    • 你成就了我的一天
    • 你也成就了我的一天
    • 这行得通,但是如果你打算使用 nvm 来实际管理不同的版本,那么每次你 nvm 到不同的版本时都必须重复这个。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      (感谢并为bodokaiser's answer+1 投票)。

      【讨论】:

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

      按照这些命令解决问题。

      在终端中:

      1. 清理整个 NPM 缓存:

        $ sudo npm cache clean -f
        
      2. sudo npm install -g n
        
      3. 安装最新的稳定版 Node.js:

        sudo n stable
        

      现在已安装最新版本的 Node.js。检查版本使用:

      node -v
      

      【讨论】:

      • 成功了!太好了..
      【解决方案6】:

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

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

      执行此操作后,我收到以下错误:

      /usr/local/lib/node_modules/npm/bin/npm-cli.js:85 让通知器 = 要求('更新通知器')({pkg}) ^^^

      SyntaxError:块范围的声明(let、const、函数、类) 尚不支持外部严格模式 在exports.runInThisContext (vm.js:53:16) 在 Module._compile (module.js:374:25) 在 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

      【讨论】:

        【解决方案7】:

        有两种解决方案:

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

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

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

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

        希望对你有帮助。

        【讨论】:

          【解决方案8】:

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

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

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

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              对于我的案例链接 did NOT work 如下

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

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

              -#!/usr/bin/env 节点

              +#!/usr/bin/env nodejs

              【讨论】:

                【解决方案11】:

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

                ~$ gulp
                

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

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

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

                这对我有用..

                【讨论】:

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

                做事

                $ sudo apt-get install nodejs-legacy
                

                它会开始工作。

                【讨论】:

                  【解决方案13】:
                  sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
                  

                  【讨论】:

                    【解决方案14】:

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

                    sudo apt-get install nodejs-legacy
                    

                    【讨论】:

                      【解决方案15】:

                      如果您能够使用 nodejs 命令访问 ubuntu 终端上的节点,那么这个问题可以通过使用简单地解决 - 使用创建 nodejs 和 node 的符号链接

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

                      这样可以解决问题

                      【讨论】:

                        【解决方案16】:

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

                        由于与另一个包冲突,来自 Ubuntu 存储库被称为 nodejs 而不是 node。保持这个 在运行软件时请注意。

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

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

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

                        【讨论】:

                        • @tom-hale 答案是 Ubuntu 的方式。您使用替代项来指定正确的节点
                        【解决方案17】:

                        如果您已经安装了 nodejs(请咨询which nodejs)并且不想安装其他软件包,您可以以 root 身份安装:

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

                        【讨论】:

                        • 这是正确的 Debian 方式。
                        • 这对我有用。 ubuntu 20,节点 10 npm 8
                        【解决方案18】:

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

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

                        【讨论】:

                        • 不要添加负面反馈,而是在评论中让我知道哪里出了问题,以便我可以帮助您。因为创建符号链接没有任何问题,特别是如果它可以帮助您更好地管理事情。
                        • 我个人更喜欢这种方法。很干净。
                        【解决方案19】:

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

                        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 有问题,并且这个解决方案对我有用,现在问题消失了
                        猜你喜欢
                        • 2023-03-19
                        • 2021-06-17
                        • 2016-02-20
                        • 1970-01-01
                        • 2011-04-08
                        • 2013-03-11
                        • 2019-12-11
                        • 2013-02-27
                        • 1970-01-01
                        相关资源
                        最近更新 更多