在WSL中安装node的问题与解决

前言

由于下载WSL+cmder后,再也不想打开Windows的命令行了,便想将Windows下的环境变量也在WSL中设置一份,Node即其中之一。由于Windows二进制文件与linux的不兼容,所以是不能直接使用Windows下的环境变量的。于是,便需要自己手动在linux中下载node。

下载

在linux下,下载软件方式众多。由于我不太喜欢用apt-get进行下载,便准备自行下载。

首先,找到nodejs官网上编译后的linux下载安装包的链接(此处不选择源码下载,懒于编译)。

下载安装包:wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz

解压安装包:tar xvf node-v10.15.1-linux-x64.tar.xz

将解压后的文件移动到/usr/app目录下,这是我自定义的软件下载目录。

配置环境变量(第一种)

将nodejs加入环境变量中

修改配置全局环境变量配置文件:vim /etc/profile (需要root权限)

添加以下内容:

1
2
export NODE_HOME=/usr/app/node-v10.15.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin

大意是在所有的环境变量之后,加入node可执行文件的目录(即node环境变量)。

使用配置文件生效:source /etc/profile 或者 重启

配置配置环境变量(第二种)

将可执行文件软链接到/usr/bin/目录下,该目录包涵了所有的可执行命令。

1
2
ln -s /usr/app/node-v10.15.1-linux-x64/bin/node /usr/bin/
ln -s /usr/app/node-v10.15.1-linux-x64/bin/npm /usr/bin/

注意:软链接一定要用绝对路径

问题

node -v 查看无误

npm -v 查看出错。报错原因:它找到Windows下node环境变量中npm执行文件,出错。

原因

echo $PATH 查看环境变量,发现其中有两个nodejs环境变量路径,前一个为windows的,后一个为linux的。WSL的缺点之处便在于:环境变量杂糅。

似乎找到了问题所在:由于Windows的node环境变量优先于linux的,所以系统先匹配到Windows的node环境变量。但是,node -v为什么可以执行呢?我也无从而知了(简称无知)。

解决

修改/etc/profile文件

export PATH=$PATH:$NODE_HOME/bin 换成 export PATH=$NODE_HOME/bin:$PATH

即将node环境变量置于所有环境变量之前。修改完别忘记source /etc/profile