介绍
主要分2种版本,LTS版和Current版,前者表示长效版、稳定版(大概是Long Time Support的意思吧),后者则表示最新版,一般看个人需要下载,我习惯下载最新版。
特别说明:
由于node.js发展实在是太快,网上一大堆文章早已经过时!所以不要被那些过时文章误导!
常见误导:windows下还需要安装什么cygwin,npm还需要单独安装(现在的node.js早已经自带npm了)等等。
安装Windows版
Windows下建议下载msi格式的,因为下载exe格式的还要自己配置环境变量,还要单独安装npm,msi格式自带了npm:
我的安装在了:D:\\GreenSoft\\nodejs
,安装完成之后:
记得以前下载v0.10.17的时候才6M多,现在6.5.0的exe文件已经有17.2M了,发展确实快。
查看版本:
node -v # 输出 v6.5.0
npm -v # 输出 3.10.3
默认情况下全局安装的路径被设置在用户目录下某个隐藏文件夹,比如我的是:C:\Users\用户名\AppData\Roaming\npm
,鄙人生平最讨厌把东西放到用户目录下(因为一旦重装系统什么都没了),所以需要修改,我一般喜欢把它放到node安装目录:
npm config set prefix "D:\\GreenSoft\\nodejs"
然后配置NODE_PATH
环境变量:D:\GreenSoft\nodejs\node_modules
,虽然我们在npm中设置了全局路径,但是node还不知道这个路径,我们需要通过NODE_PATH
这个环境变量来告诉node(暂时是这么理解,不知道有没有误)。
PS:好奇怪,什么时候开始修改环境变量必须重启资源管理才生效了?记得以前明明不需要的啊,我的是Win8.1系统。
查看NODE_PATH
环境变量是否生效可以通过global.module.paths
命令查看node模块查找路径来验证,如果里面出现了你配置的路径,那说明成功了:
F:\Workspaces\HBuilder\epgjs>node
> global.module.paths
[ 'F:\\Workspaces\\HBuilder\\epgjs\\repl\\node_modules',
'F:\\Workspaces\\HBuilder\\epgjs\\node_modules',
'F:\\Workspaces\\HBuilder\\node_modules',
'F:\\Workspaces\\node_modules',
'F:\\node_modules',
'D:\\GreenSoft\\nodejs\\node_modules',
'C:\\Users\\admin\\.node_modules',
'C:\\Users\\admin\\.node_libraries',
'D:\\GreenSoft\\lib\\node' ]
安装Linux版
想不到一个Linux安装Nodejs竟然充满了曲折之路,说出来丢人。。。
心酸血泪史,看正文的请直接跳过这段
背景
服务器是Centos6.5,上面的nodejs还是N年前的4.x,非常老了,很多东西都不兼容,必须升级。
初次尝试
直接官网下载最新的LTS二进制包:
命令:
cd /home/node
wget https://nodejs.org/dist/v12.18.0/node-v12.18.0-linux-x64.tar.xz
tar -zxvf node-v12.18.0-linux-x64.tar.xz
mv node-v12.18.0-linux-x64 node-v12.18.0
# 配置环境变量
vim /etc/profile
# 末尾追加如下内容
PATH=$PATH:/home/node/node-v12.18.0/bin
# 使环境变量生效
source /etc/profile
然后信心满满的测试node -v
,谁知报错如下:
再次尝试
百度一下大概就是gcc和glibc的版本太低,然后尝试了无数种方法,各种坑,直接yum install nodejs
版本竟然还是0.x
的,我尼玛!然后yum install gcc
版本最新也才4.4.7,yum install glibc
最新版本只有2.12
,反正都不符合期望。
然后尝试了修改yum源、自行编译安装、等等无数方法,都失败了,过程不细述,总结一句话就是:我操!老子就是安装一个最新的nodejs都这么麻烦???
升级gcc
先升级gcc,这个升级是不是必须的我也不确定:
# 下载
wget https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
rpm -ivh rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
# 安装,过程很长,会安装30个开发相关的工具包,大概十几分钟
yum install devtoolset-3-toolchain
# 设置环境变量生效
scl enable devtoolset-3 bash
结束后输入gcc -v
验证,安装了4.9.2:
升级 glibc
这一步最后应该算是失败了,读者看到这里千万不要去尝试!!!建议直接跳过!!!
访问网站: http://ftp.gnu.org/pub/gnu/glibc/ ,复制 glib-2.17.tar.gz
的下载链接:
cd /home/lib
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.gz
tar -zxvf glibc-2.17.tar.gz
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/home/lib/glibc-2.17/build
# 这一步过程很长,大概需要十几分钟
make && make install
执行strings /lib64/libc.so.6|grep GLIBC
验证:
发现 2.17还是没有出现在这里,然后看到说要配置环境变量:
# 添加环境变量
vim /etc/profile
# 在文件里加入这一行,保存退出
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/home/lib/glibc-2.17/build/lib
# 使之生效
source /etc/profile
这时候验证node -v
时少了glibc的错误了:
但是执行strings /lib64/libc.so.6|grep GLIBC
却又报错:
准备把环境变量改回去,结果连vim、ls等基础命令都失效了!尼玛,这完蛋了,还好找到了补救方法(切记不可断连接,据说断了之后ssh都连不上了):
export LD_LIBRARY_PATH=/usr/local/lib
尝试直接源码安装
cd /home/node
wget https://nodejs.org/dist/v12.18.0/node-v12.18.0.tar.gz
tar -zxvf node-v12.18.0.tar.gz
cd node-v12.18.0
./configure
结果提示需要python2.7(机器为2.6.6):
升级最新python
cd /home/lib
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar -zxvf Python-2.7.18.tgz
mv Python-2.7.18 python-2.7.18
cd python-2.7.18
./configure
make && make install
安装完后输入python
还是2.6.6,输入pythone2
显示的是2.7.18,如果介意的话可以建一个软连接。
完事后再到node下面执行./configure
后又换了个错误,真的是崩溃!
尝试升级gcc
上述过程发现gcc4.9版本还是太低了,最新的好像都10.x了,于是决定升级gcc。这次直接上devtoolset-8
# 1. Install a package with repository for your system:
# On CentOS, install package centos-release-scl available in CentOS repository:
$ sudo yum install centos-release-scl
# On RHEL, enable RHSCL repository for you system:
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
# 2. Install the collection:
$ sudo yum install devtoolset-8
# 3. Start using software collections:
$ scl enable devtoolset-8 bash
比较快,完事后输入gcc -v
显示8.3.1。
但是装完这个之后,无论是源码安装还是使用编译好的都还是报各种错误。
终于开窍了,换Node版本!
最后不知道怎么脑子开窍了,想着要不换个老一点的node版本试试?官网选了一个比较老的6.x,直接下载二进制,谁知竟然成功了,我草你妈!真想骂娘!
补充:经过多次对比,发现我服务器的环境最高可以支持
node-v11
,所以把node-v12
和node-v6
都删了,只保留node-v11
。
正文
最新的LTS版(node-v12
)运行需要较高版本的gcc
、glibc
以及glibcxx
,由于Centos6.5
自带的yum最高支持的版本非常有限,手动升级安装很麻烦,经过测试,在不升级gcc
等依赖包的前提下,最高可以支持node-v11
。
在Node历史版本下载页面里面选择v11.15.0,复制node-v11.15.0-linux-x64.tar.gz
的下载链接:
然后执行:
cd /home/node
wget https://nodejs.org/dist/v11.15.0/node-v11.15.0-linux-x64.tar.gz
tar -zxvf node-v11.15.0-linux-x64.tar.gz
mv node-v11.15.0-linux-x64 node-v11.15.0
# 配置环境变量
vim /etc/profile
# 末尾追加如下内容
PATH=$PATH:/home/node/node-v11.15.0/bin
# 使环境变量生效
source /etc/profile
输入node -v
测试,如果还是旧的值,有可能是环境变量没有立即生效,此时端口SSF重连即可。
npm简单介绍
npm常见命令
npm root -g # 查看当前全局目录
npm config ls # 列出当前npm主要配置
npm config ls -l # 列出当前所有npm配置
npm config set 配置名 配置值 # 设置某个配置
npm config get 配置名 # 获取某个配置
npm ls # 列出当前目录下安装的模块
npm ls -g # 列出全局安装的所有模块
配置文件在:C:\Users\用户名\.npmrc
,直接修改它和使用npm config set
是一样的效果。
使用淘宝镜像
配置:
npm config set registry https://registry.npm.taobao.org