uniapp node-sass 总出错中级解决方案

发布者: xiaozhimn

`1、错误描述

[编译scss/sass] 15:48:25.231 internal/modules/cjs/loader.js:717
[编译scss/sass] 15:48:25.231 return process.dlopen(module, path.toNamespacedPath(filename));
[编译scss/sass] 15:48:25.231 ^
[编译scss/sass] 15:48:25.231 Error: \?\G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-x64-64\binding.node is not a valid Win32 application.
[编译scss/sass] 15:48:25.231 \?\G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-x64-64\binding.node
[编译scss/sass] 15:48:25.231 at Object.Module._extensions..node (internal/modules/cjs/loader.js:717:18)
[编译scss/sass] 15:48:25.231 at Module.load (internal/modules/cjs/loader.js:598:32)
[编译scss/sass] 15:48:25.231 at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
[编译scss/sass] 15:48:25.231 at Function.Module._load (internal/modules/cjs/loader.js:529:3)
[编译scss/sass] 15:48:25.231 at Module.require (internal/modules/cjs/loader.js:636:17)
[编译scss/sass] 15:48:25.231 at require (internal/modules/cjs/helpers.js:20:18)
[编译scss/sass] 15:48:25.231 at module.exports (G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\binding.js:19:10)
[编译scss/sass] 15:48:25.231 at Object.<anonymous> (G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\index.js:14:35)
[编译scss/sass] 15:48:25.231 at Module._compile (internal/modules/cjs/loader.js:688:30)
[编译scss/sass] 15:48:25.231 at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
[编译scss/sass] 15:56:14.903 [0;31m–> LibSass 的二进制文件(G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-x64-64\binding.node)缺失,请执行下面3条命令下载对应版本的二进制文件:(有可能引发此错误的原因是 Node 版本变更)[0m
[编译scss/sass] 15:56:14.903 mkdir -p G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-x64-64
[编译scss/sass] 15:56:14.903 cd G:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-x64-64
[编译scss/sass] 15:56:14.903 curl -o binding.node http://cdn.npm.taobao.org/dist/node-sass/v4.7.2/win32-x64-64_binding.node
[编译scss/sass] 15:56:14.903 [0;31m–> MacOS 、Unix/Linux 请根据权限使用 sudo [0m `

以上错误是一个让人很头疼的事情,我们知道hbuildx是一个将node等各种工具以插件的形式集成到了次工具中的强大编辑器,
它内置的node版本是8.x 我们可以通过插件的形式安装 node-sass 但当我们在代码中写入scss的代码总是报以上错误,最主要的原因就是 node版本和binding.node这个文件不匹配,那如何解决这个问题呢?

第一步:

我们进入hbuilderx 的源文件目录例如: 
C:\Users\X20052\Downloads\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor
里面可能有多个文件,我们不知道 当前所继承的node使用的是哪个文件,此时可以使用下一步方法找到

第二步:

我们cd到一下目录下,也就是node插件所在的目录
C:\Users\X20052\Downloads\HBuilderX\plugins\node
执行:
node -p "[process.platform, process.arch, process.versions.modules].join('-')"
执行这个命令
结果: win32-ia32-57
ok 此时我们拷贝出里面的 binding.node文件,并按照以上错误提示: 例如:
C:\Users\X20052\AppData\Roaming\npm-cache\node-sass\4.14.1\win32-x64-72_binding.node is not a valid Win32 application. 

第三步:

赋值第二步的文件,并拷贝到此错误提示的目录下,然后按照错误提示的内容修改文件名

总结

以上的错误主要是由于node的版本和 binding.node文件不匹配,一般是由于你之前安装了其他的node版本导致binging.node关联到了之前的node环境,我们只需要保证 node-sass-china\vendor下的和npm-cache中的一致即可,前提是我们要知道当前node所需要的bingding.node版本。
0赞