0%

uniapp HBuild打包 node-sass报错解决记录

uniapp开发的差不多了,打算打包一下看看,使用HBuild的云打包,发现报错:

1
Node Sass could not find a binding for your current environment: OS X 64-bit with Node.js 8.x [HBuilder] 10:52:46.052 Found bindings for the following environments:

导致打包失败,需要解决这个问题。

现象的产生

我采用了HBuild的云打包:
uniapp hbuild cloud build

点击打包的时候在控制台报错Node Sass could find a binding ...这个错误。

找到问题的本质

搜到了这个文章:https://ask.dcloud.net.cn/question/82024

明白了问题的发生点。

我为了方便控制,创建uniapp的时候使用的是npm管理的,而不是深度依赖HBuild,这样是更自由点。

但是打包还是希望使用HBuild,方便。

这样是产生了一个偏差点,我开发的时候使用的是本机的node,查看下node的版本:

1
2
$ node -v
v12.16.2

而HBuild有个内置的node,是v8.10.0。

在打包发布的时候会使用HBuild内置的node,所以是会报错的。

总结来说,我们node_module下的包是用高版本的node生成的,但是在打包的时候使用的HBuild里面的低版本的node,所以就会找不到需要的东西。

解决问题

解决的方法有多种,但我们这里已经使用了npm的形式开发,那么我们打包最好还是保持同样的环境,省的麻烦。

所以我们告诉HBuild使用我们本机的node即可。

ps: 注意这里是mac下的解决方法。

首先进入HBuild自带的node下面,将node重命名即可备份:

1
2
$ cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node
$ mv node node-v8

然后添加本机node的软链接:

1
$ ln -s /usr/local/bin/node /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node/node

然后重启HBuild,再次打包,会发现正确打包了,nice~

码字辛苦,打赏个咖啡☕️可好?💘