我从nodejs.org上给出的tar文件中解压缩了node.js,但是当我尝试通过node命令执行我的js程序时没有任何反应,但另一方面nodejs命令运行执行该文件。
所以我的问题是节点命令和nodejs命令之间的区别是什么?它会影响我的程序,因为我没有从源代码构建。 而这就是造成这种差异的原因。
答案 0 :(得分:18)
这在很大程度上取决于许多因素。主要取决于shell中node
和nodejs
的实际内容。您可以使用type node
/ type nodejs
和/或which node
/ which nodejs
(或者whereis
)进行检查。此也取决于操作系统和shell。
我的猜测是which -a node
会产生/usr/sbin/node
不 nodejs可执行文件,因此它不会执行您的节点代码。在我的系统上,它是:
/usr/bin/node -> /etc/alternatives/node -> /usr/bin/nodejs
即。 node
只是nodejs
的符号链接,它是可执行文件。
您也可以自己创建此别名,以便覆盖node
为您提供的任何内容。
答案 1 :(得分:10)
其中一些答案对我来说很难理解,所以我会写出能够帮助我的答案。
node
类似于无线电遥测解决方案,他们恰好首先抓住了node
这个名字。 nodejs
就是你所追求的。所以
请确保你:
apt-get install nodejs
然后,要修复蹩脚的命名问题,请创建一个符号链接。 node
和nodejs
之间的符号链接。
sudo ln -s /usr/bin/nodejs /usr/bin/node
第一部分是原始文件放置,然后是它应链接到的位置。 您还可以在bash配置文件中创建别名,这也非常简单。
答案 2 :(得分:2)
确定可用的节点' package与nodejs无关。
从这里看一下这个节点:
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
与节点包(业余数据包无线电节点程序)存在命名冲突,并且nodejs二进制文件已从节点重命名为nodejs。您需要将/ usr / bin / node符号链接到/ usr / bin / nodejs,或者您可以卸载业余数据包无线电节点程序以避免这种冲突。
所以看起来你可以用
清除那个广播节目dpkg --purge node
然后通过常见的方式之一安装nodejs。来自预编译的deb软件包,如下所示:
sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
但是nodejs的更新速度比包更快,所以在你获得任何nodejs版本后,使用这个模块来管理nodejs版本效率更高 - https://github.com/visionmedia/n
至少经过一些测试后,这个解决方案看起来最适合我在mac os。