我在给出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
命令就可以了。
答案 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"没有任何反应。
我以下一种方式解决了这个问题:
安装nodejs-legacy
sudo apt-get install nodejs-legacy
之后,当我输入" node"在命令行中,我收到一条错误消息" / usr / sbin / node:没有这样的文件或目录"
其次,我做了什么,它是" 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)
如果您想安装多个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)
答案 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