webpack3.6.0中安装node-sass、sass-loader以及遇到的坑
我是在深度deepin4.15.0的Linux系统上搭建的环境,node和npm版本如下:
node -v
v12.16.0
npm -v
6.13.4
在安装node-sass的过程中确实很容易遇到的坑
1、一开始安装的时候一直报错,看报错也没仔细,在网上找了各种安装node-sass的方法,均失败;
2、后来仔细看了一下是g++命令执行失败导致的,这种情况是Linux操作系统g++版本的问题,属于g++低版本的原因。
报错当时忘记截图了,后来也没找到,所以就不附报错内容了。
3、先更新系统g++版本
a.先更新安装更新gcc(需要在root权限下去更新):
sudo apt-get install gcc
~/Desktop/CH_Test_Project$ sudo apt-get install gcc
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
gcc 已经是最新版 (4:6.3.0-4)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
b.再安装更新g++(需要在root权限下去更新):
sudo apt-get install g++
~/Desktop/CH_Test_Project$ sudo apt-get install g++
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
g++-6
建议安装:
g++-multilib g++-6-multilib gcc-6-doc libstdc++6-6-dbg
下列【新】软件包将被安装:
g++ g++-6
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 7,094 kB/7,096 kB 的归档。
解压缩后会消耗 24.5 MB 的额外空间。
您希望继续执行吗? [Y/n] Y
获取:1 http://packages.deepin.com/deepin lion/main amd64 g++-6 amd64 6.3.0-18+deb9u1 [7,094 kB]
已下载 5,360 kB,耗时 1秒 (2,685 kB/s)
正在选中未选择的软件包 g++-6。
(正在读取数据库 ... 系统当前共安装有 241860 个文件和目录。)
正准备解包 .../g++-6_6.3.0-18+deb9u1_amd64.deb ...
正在解包 g++-6 (6.3.0-18+deb9u1) ...
正在选中未选择的软件包 g++。
正准备解包 .../g++_4%3a6.3.0-4_amd64.deb ...
正在解包 g++ (4:6.3.0-4) ...
正在设置 g++-6 (6.3.0-18+deb9u1) ...
正在设置 g++ (4:6.3.0-4) ...
update-alternatives: 使用 /usr/bin/g++ 来在自动模式中提供 /usr/bin/c++ (c++)
4、这样g++就安装好了,可以开始安装node-sass了,本以为会一路绿灯,无奈事与愿违;
刚开始安装node-sass是4.5.3的版本安装报错如下:
../src/create_string.cpp
../src/create_string.cpp: In function ‘char* create_string(Nan::MaybeLocal<v8::Value>)’:
../src/create_string.cpp:17:37: error: no matching function for call to ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>&)’
v8::String::Utf8Value string(value);
^
In file included from /home/chxiaoyu/.node-gyp/12.16.0/include/node/node.h:63:0,
from ../../nan/nan.h:54,
from ../src/create_string.cpp:1:
/home/chxiaoyu/.node-gyp/12.16.0/include/node/v8.h:3135:5: note: candidate: v8::String::Utf8Value::Utf8Value(v8::Isolate*, v8::Local<v8::Value>)
Utf8Value(Isolate* isolate, Local<v8::Value> obj);
^~~~~~~~~
/home/chxiaoyu/.node-gyp/12.16.0/include/node/v8.h:3135:5: note: candidate expects 2 arguments, 1 provided
binding.target.mk:131: recipe for target 'Release/obj.target/binding/src/create_string.o' failed
make: *** [Release/obj.target/binding/src/create_string.o] Error 1
make: Leaving directory '/home/chxiaoyu/Desktop/CH_Test_Project/node_modules/node-sass/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/chxiaoyu/Desktop/CH_Test_Project/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:321:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.15.0-30deepin-generic
gyp ERR! command "/home/chxiaoyu/software/nodejs/bin/node" "/home/chxiaoyu/Desktop/CH_Test_Project/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/chxiaoyu/Desktop/CH_Test_Project/node_modules/node-sass
gyp ERR! node -v v12.16.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
出现这种报错情况一般是版本的问题导致。
5、安装node-sass的4.12.0版本没有报错就算成功了:
npm install node-sass@4.12.0
(可以加 -g 或 -save-dev 进行全局或局部安装)
6、安装sass-loader的7.1.0版本没有报错就算成功的;
npm install sass-loader@7.1.0
(可以加 -g 或 -save-dev 进行全局或局部安装)
7、可以到package.json文件中查看包是否存在
总结:安装各种webpack的依赖经常会出现这种或那样的问题,需要我们仔细分析一下报错才行。虽然网上有各种问题的安装方法,但按照他们的也许可行,也许不可行,但总会耗费自己的大量时间。所以仔细分析自己的报错是什么原因导致的,才能对症下药快速解决问题。