场景描述
最近在使用uni-app开发小程序时,因为引入了第三方组件使用了sass,HBuilder默认没有安装‘scss/sass’插件,导致编译报错,于是用安装了一下,但是接着运行小程序又出现了如下错误:
11:07:06.103 Module build failed (from ./node_modules/sass-loader/lib/loader.js):
11:07:06.103 Error: \\?\C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node is not a valid Win32 application.
11:07:06.110 \\?\C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node
11:07:06.111 at Object.Module._extensions..node (module.js:681:18)
11:07:06.117 at Module.load (module.js:565:32)
11:07:06.123 at tryModuleLoad (module.js:505:12)
11:07:06.128 at Function.Module._load (module.js:497:3)
11:07:06.129 at Module.require (module.js:596:17)
11:07:06.134 at require (internal/module.js:11:18)
11:07:06.134 at module.exports (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\binding.js:19:10)
11:07:06.144 at Object.<anonymous> (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\index.js:14:35)
11:07:06.145 at Module._compile (module.js:652:30)
11:07:06.155 at Object.Module._extensions..js (module.js:663:10)
11:07:06.161 at Module.load (module.js:565:32)
11:07:06.172 at tryModuleLoad (module.js:505:12)
11:07:06.172 at Function.Module._load (module.js:497:3)
11:07:06.179 at Module.require (module.js:596:17)
11:07:06.186 at require (internal/module.js:11:18)
11:07:06.187 at Object.<anonymous> (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\index.js:8:22)
分析
首先我们从错误信息中分析提取有用的信息:C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node is not a valid Win32 application。这段信息说的就是这个环境下的的win32-x64-64_binding.node这个二进制可执行文件是无效的。
初步排查,排除版本问题(node-sass@4.7.0):
npm rm node-sass
npm install node-sass
然后重新运行小程序还是报同样的错误。
解决办法
经过测试和版本没关系。于是根据提示下载/win32-ia32-57_binding.node.这个文件。然后放入刚才的目录下。重启,没效果还是刚才的错误。
然后修改系统环境中的变量配置,还是一样的效过。
于是想到替换文件名,将刚才下载的文件名替换未报错的文件名
这样就启动了。
经过两小时的探索,不断的搜索资料,解决了问题。综合这几天的实验。。总结一下,详细的步骤
npm install -g node-gyp
npm install –global –production windows-build-tools
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org
npm install node-sass(在C盘以管理员身份执行)
配置环境变量
SASS_BINARY_PATH=你自己的文件路径 eg:C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node