在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 | export NODE_HOME=/usr/app/node-v10.15.1-linux-x64 |
大意是在所有的环境变量之后,加入node可执行文件的目录(即node环境变量)。
使用配置文件生效:source /etc/profile
或者 重启
配置配置环境变量(第二种)
将可执行文件软链接到/usr/bin/
目录下,该目录包涵了所有的可执行命令。
1 | ln -s /usr/app/node-v10.15.1-linux-x64/bin/node /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
。