linux下node-sass安装失败的解决方法

linux下node-sass安装失败的解决方法

最近在实现前端自动化构建部署时,遇到linux服务器端node-sass安装失败的错误,解决后特在此记录一下。自动化构建部署简单来说就是在构建部署服务器上拉取存放在gitlab上前端源码,然后执行npm installnpm run build等命令对项目进行打包,然后再执行一些脚本将打包后的成果物放在前端项目运行的服务器上。

前端项目打包需要在node环境下,于是在linux环境服务器下安装node,在服务器网络可以正常访问的情况下,将前端项目源码拉取下来后,执行npm install会安装项目所需的依赖,在通过npm run build就可以打出前端项目包。但是,实际情况就没有那么简单,我们在实现过程中遇到了两个问题:首先是我们前端项目所需的依赖来源多样化,有的依赖是公共的,也就是在淘宝npm源、npm官方源上就可以下载安装,有的则是公司自己开发的,需要切换到公司的npm源上进行安装,在服务器上单单在一个npm源上通过npm install是无法将项目所需的依赖都安装完成,但是切换npm源进行安装就难以实现自动化构建;其次是公司服务器是无法与外网连接,也就是想通过npm install下载依赖是不可能的。于是只能通过将本地的依赖文件夹(node_modules)上传到服务器上,这样就省了每次下载安装依赖过程,也提高了构建速度。

如果项目中没有使用node-sass依赖的话,通过将node_modules上传到服务器后就可以执行npm run build打包,但是我们项目中使用了node-sass这个依赖,于是就出现了如下图所示报错:

linux下node-sass安装失败的解决方法_第1张图片
问题分析与解决:

出现上述报错的原因是node-sass与操作系统相关,我们本地是window系统,本地安装好的依赖包直接上传到下linux服务器上是无法直接使用的,图中报错中也提示了我们解决方法:执行npm rebuild node-sass来为当前环境下载所需的binding(我们暂称它为连接器),如果服务器网络没有限制,那么执行npm rebuild node-sass就可以解决该问题,但是由于公司服务器网络限制,又只能另寻解决方法,那就是手动下载linux环境下node-sass所需的连接器,从图中的错误提示可以看出,是由于缺少node_modules/node-sass/vendor/linux-x64-72/binding.node文件导致的,我们从本地上传到linux服务器上的node-sass/vendor下是win32-x64-57/binding.node,于是我们需要下载linux-x64-72对应的binding.node文件并替换即可,点击进入下载地址,找所需的binding.node下载,并将node-sass/vendor下的win32-x64-57文件夹改名为linux-x64-72,并替换所需的binding.node文件。

你可能感兴趣的:(node-sass,linux,node,node,linux)