node.js学习笔记(一)环境安装
本文由 小茗同学 发表于 2016-09-08 浏览(2441)
最后修改 2020-06-15 标签:node.js 入门 下载 安装

介绍

主要分2种版本,LTS版和Current版,前者表示长效版、稳定版(大概是Long Time Support的意思吧),后者则表示最新版,一般看个人需要下载,我习惯下载最新版。

特别说明
由于node.js发展实在是太快,网上一大堆文章早已经过时!所以不要被那些过时文章误导!
常见误导:windows下还需要安装什么cygwin,npm还需要单独安装(现在的node.js早已经自带npm了)等等。

安装Windows版

进入官网下载,这里我下载最新的6.5.0版

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-v12node-v6都删了,只保留node-v11

正文

最新的LTS版(node-v12)运行需要较高版本的gccglibc以及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是一样的效果。

使用淘宝镜像

官网:https://npm.taobao.org/

配置:

npm config set registry https://registry.npm.taobao.org