出现问题的前提条件:
阅读 uniapp 官网的教程,快速上手阶段使用 hbuildx 进行项目搭建时,无法成功启动 uniapp 项目。

这个问题在网上有很多解答,但是大部分都说的很不清楚。

在网上随便找了点代码复现错误:

[编译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

仔细观察可以发现 其实两次出现的这个路径都是同一个,我们直接去定位这个地方,会发现是这样的:

一个名为 win32 x64 -**(后续的数字可能时72也可能是64) 的文件夹下有一个binding.node 文件。

网上有一些教程给出的处理方法是:
使用该指令:

node -p "[process.platform, process.arch, process.versions.modules].join('-')"

进行 binding.node 版本查看然后再进行文件的版本替换。

注意!! 使用这个指令去查看的 binding.node 是全局的版本,它不一定是 uniapp 所需要的版本!!如果你把这个直接覆盖掉是会影响其他项目的,因为它是全局 binding ,不是我们 uniapp 的。

根据这个指令的版本号去下载 github 上的 binding 是会报错的!

那到底要去下载什么版本的binding呢?

正确的解决方案:

github 上下载对应的文件夹名称版本的 binding.node 并覆盖掉该文件夹下的 binding.node 即可。
这个处理方法是正确的。

如:我目前是 win32 x64 -72 文件夹下的 binding 文件报错,那么我要去 github 上下载 win32 x64 -72 版本的 binding.node 文件进行覆盖。

这样覆盖之后,uniapp就可以成功启动了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐