ubuntu 12.04上的nodejs vs node

时间:2013-08-08 15:33:34

标签: javascript node.js ubuntu serverside-javascript

我在给出here

指令的ubuntu上安装了nodejs

当我在终端写node --version时,我看到了这一点:
-bash: /usr/sbin/node: No such file or directory

我可以在/usr/sbin/目录中看到节点。

撰写npm --version会显示1.3.5
nodejs --version会显示v0.10.15

另外,我可以在/usr/bin/目录中看到节点。

那么,我如何让node工作?

另外,如果我使用 zsh 而不是bash,那么node命令就可以了。

20 个答案:

答案 0 :(得分:588)

您需要手动创建符号链接/usr/bin/node。 bash兼容shell的快捷方式:

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

或者,如果您使用非标准shell,只需使用which nodejs对找到的路径进行硬编码:

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

稍后修改

我在你发布的链接中找到了这个解释

  

与节点包(业余数据包无线电节点程序)存在命名冲突,并且nodejs二进制文件已从节点重命名为nodejs。您需要将/ usr / bin / node符号链接到/ usr / bin / nodejs,或者您可以卸载业余数据包无线电节点程序以避免这种冲突。

稍后编辑

我回答这个问题已经有一段时间了。虽然我在这里发布的解决方案多次为我工作,但用户在评论中报告了更多解决方案:

来自@ user229115

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

来自AskUbuntu(用户leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

答案 1 :(得分:87)

我认为就是这样:

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

使用Debian替代方案。

答案 2 :(得分:63)

显然,Ubuntu版本之间的解决方案不同。以下是在Ubuntu 13.10上为我工作的:

sudo apt-get install nodejs-legacy

HTH

修改:经验法则

如果您已安装nodejs但缺少/usr/bin/node二进制文件,则还要安装nodejs-legacy这只会创建缺少的软链接。

根据我的测试,在安装/usr/bin/node之后,Ubuntu 17.10及更高版本已经具备了兼容性 - 软链接nodejs,因此这些版本中不再包含nodejs-legacy需要的。

答案 3 :(得分:30)

我在Ubuntu 14.04中遇到了同样的问题。

我已经安装了" nodejs"并且它正在工作,但前提是我使用命令" nodejs"。如果我尝试使用" node"没有任何反应。

我以下一种方式解决了这个问题:

  1. 安装nodejs-legacy

    sudo apt-get install nodejs-legacy
  2. 之后,当我输入" node"在命令行中,我收到一条错误消息" / usr / sbin / node:没有这样的文件或目录"

    1. 其次,我做了什么,它是" nodejs"上的符号链接:

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

答案 4 :(得分:11)

这也发生在我身上。

node -v => 0.10.2
nodejs -v => 5.5.0

问题是我前一段时间从源代码安装了节点。正在运行

which node

始终指向此本地安装。另外,

echo NODE_PATH

指向本地安装。

使用源安装删除目录没有帮助。它刚刚打破了node命令。最后,取消设置NODE_PATH环境变量并清除然后重新安装nodejs就可以了。

unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

在此之后,

node -v => 5.5.0

和npm install开始适用于包取决于Node => 5.0。

答案 5 :(得分:10)

我是这一切的新手,但对我来说,一个简单的别名有效:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

至少在bash中直接运行并执行.js文件。

答案 6 :(得分:9)

节点版本管理器(nvm)

如果您想安装多个nodejs版本并在它们之间轻松切换,我建议您使用Node Version Manger。它还解决了命名问题(node vs nodejs

这很简单:

安装nodejs版本:

$ nvm install 4.4

现在除了已安装的版本之外,还有nodejs 4.4,您只需使用node命令即可​​访问新安装的版本:

$ node -v    // The new version added by nvm.
v4.4.5
$ nodejs -v  // The OS version is untouched and still available.
v0.10.25

您可以安装更多nodejs版本并轻松切换它们:

$ nvm install 6.2
$ nvm use 6.2
Now using node v6.2.1 (npm v3.9.3)
$ node -v
v6.2.1
$ nvm use 4.4
Now using node v4.4.5 (npm v2.15.5)

答案 7 :(得分:9)

如何使用nodejs site 中的官方说明:

对于第7版:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

对于v6:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

对于v4:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

我已经从Windows bash(通过Linux子系统 - 14.04)和raspbian(基于ARM Debian)测试了这些。在没有先运行安装脚本的情况下运行sudo apt-get install -y nodejs将导致您获得节点0.10。

如果您计划安装需要构建的本机npm模块,请运行:

sudo apt install -y build-essential

注意:这是所有体系结构中任何基于Debian的发行版的推荐路径。

答案 8 :(得分:7)

迟到的答案,但是对于最新信息......

如果使用node github installation readme中的推荐方法安装node.js,它建议按照nodesource blog article上的说明进行操作,而不是从过时的apt-get repo安装,node.js应该使用if GameScene.paused == true { return } 命令以及node命令运行,而不必创建新的符号链接。

文章中的这个方法是:

nodejs

请注意,这是针对v0.12的,这可能会在不久的将来变得过时。

此外,如果您在公司代理(例如我)后面,您希望在sudo命令中添加-E选项,以保留代理所需的环境变量:

# Note the new setup script name for Node.js v0.12 curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash - # Then install with: sudo apt-get install -y nodejs

答案 9 :(得分:7)

添加@ randunel的正确答案(无法对SO发表评论):

我还必须将/ usr / local / bin / node符号链接到/ usr / bin / nodejs。

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

显然,这会覆盖/ usr / bin / node命令。

不知道如何设定,但希望它可以帮助别人,因为弄清楚为什么上述不适合我是一种痛苦。

答案 10 :(得分:5)

这对我有用:

alias node=nodejs

按照this链接中的说明进行操作。

答案 11 :(得分:4)

如果您在运行Ubuntu实例的AWS EC2实例上(在Ubuntu 16.x上测试过),那么这些步骤可能对您有用:

    sudo apt-get update
    sudo apt-get --purge remove node -y
    sudo apt-get --purge remove nodejs -y
    sudo apt-get --purge remove legacy-node -y
    sudo rm  /usr/bin/node
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get install nodejs -y
    node -v

如果一切正确,则最后一个命令应具有如下输出:v6.x.x

如果没有,请运行以下命令:

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

希望这会有所帮助。它神奇地帮助了我(呵呵)。

答案 12 :(得分:3)

我有同样的问题符号链接帮助我: sudo ln -s / usr / bin / nodejs / usr / bin / node 之后 sudo npm install -g phantomjs-prebuilt

顺利进行

答案 13 :(得分:2)

安装nodejs的最佳方法是通过NVM(节点版本管理器)

删除以前的版本:

$ sudo apt-get purge node
$ sudo apt autoremove

同时删除包含此文件夹的目录中{{1}}的所有node_modules。

节点& Nodejs在技术上是一回事。只是命名改变了。

首先安装或更新nvm

以root身份运行

$ sudo su 

然后

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | bash

OR

$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | bash

检查nvm到路径

$ source ~/.profile
$ nvm ls-remote

如果您收到有关商家信息的错误,请安装git。

$ sudo apt-get install git

重新开始:

$ nvm ls-remote
$ sudo nvm ls-remote

$ nvm install version-you-require 

检查版本

# node --version
nvm use version-you-require

信息法庭:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

答案 14 :(得分:1)

我创建了一个符号链接,但它仍然没有工作。

我忘了重新启动终端(我的putty连接)。我没有符号链接后工作了:)

答案 15 :(得分:1)

  

对绝对的初学者有帮助

虽然你已经得到了答案,但是只想指出node命令(没有任何参数)将在REPL read-eval-print-loop 模式下启动节点执行原始的javascript代码。

使用node命令的另一种方法是为其提供js文件作为参数。这就是我们主要使用它的方式。

答案 16 :(得分:0)

可以删除现有节点和nodejs,但必须安装最新的7.x nodejs。

#include <iostream>
#include <unordered_map>

uint64_t MurmurHash3Mixer( uint64_t key ) { 
    key ^= (key >> 33);
    key *= 0xff51afd7ed558ccd;
    key ^= (key >> 33);
    key *= 0xc4ceb9fe1a85ec53;
    key ^= (key >> 33);

    return key;
}


int main() {

    uint64_t tx = 10L;
    std::unordered_map<uint64_t, uint64_t> ht; 
    ht.insert(std::make_pair<uint64_t, uint64_t>(tx, 20));
    std::cout << ht[tx] << std::endl;

    return 0;
}

答案 17 :(得分:0)

只需使用NVM(节点版本管理器) - https://github.com/creationix/nvm

它已成为管理Node.js的标准。

当您需要新版本时:

class ComparatorTest extends TestCase
{
    private $arrayA;
    private $arrayB;
    private $expectedA;
    private $expectedB;

    public function setUp()
    {
        parent::setUp();

        $this->arrayA = [
            ['key1' => '000','key2' => '8989'],
            ['key1' => '123','key2' => '354'],
            ['key1' => 'aaa','key2' => 'sbbb'],
        ];

        $this->arrayB = [
            ['key1' => '123','key2' => '354'],
            ['key1' => 'aaa','key3' => 'asdf'],
            ['key1' => '654','key2' => '8989'],
        ];

        $this->expectedA = [
            ['key1' => '000','key2' => '8989'],
            ['key1' => 'aaa','key2' => 'sbbb']
        ];

        $this->expectedB = [
            ['key1' => 'aaa','key3' => 'asdf'],
            ['key1' => '654','key2' => '8989'],
        ];
    }

    public function testArrayDiffAssocRecursive()
    {
        $a = $this->flattenSecondLevelArray($this->arrayA);
        $b = $this->flattenSecondLevelArray($this->arrayB);

        $addFlat = array_diff($a, $b);
        $deleteFlat = array_diff($b, $a);

        $add = [];
        if (!empty($addFlat)) {
            foreach($addFlat as $row) {
                $add[] = json_decode($row, true);
            }
        }

        $delete = [];
        if (!empty($deleteFlat)) {
            foreach($deleteFlat as $row) {
                $delete[] = json_decode($row, true);
            }
        }

        $this->assertEquals($this->expectedA, $add);
        $this->assertEquals($this->expectedB, $delete);
    }

    private function flattenSecondLevelArray($array)
    {
        $flat = [];
        if(!empty($array) && is_array($array)) {
            foreach ($array as $pair) {
                $flat[] = json_encode($pair);
            }
        }
        return $flat;
    }
}

如果出现问题,您可以随时返回

nvm install NEW_VER
nvm use XXX

答案 18 :(得分:0)

您可以执行此命令以启用nodejs:

scl enable rh-nodejs8 bash

注意:检查您的节点版本。

<强>来源: https://developers.redhat.com/products/softwarecollections/hello-world/

答案 19 :(得分:0)

https://nodejs.org/en/download/

Download .pkg file on your mac and install it. it directly works.

➜  ~ which node
/usr/local/bin/node
➜  ~ node --version
v10.11.0
➜  ~ which npm
/usr/local/bin/npm
➜  ~ npm --version
6.4.1