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的云打包:
点击打包的时候在控制台报错Node Sass could find a binding ...
这个错误。
找到问题的本质
搜到了这个文章:https://ask.dcloud.net.cn/question/82024 。
明白了问题的发生点。
我为了方便控制,创建uniapp的时候使用的是npm管理的,而不是深度依赖HBuild,这样是更自由点。
但是打包还是希望使用HBuild,方便。
这样是产生了一个偏差点,我开发的时候使用的是本机的node,查看下node的版本:
1 | node -v |
而HBuild有个内置的node,是v8.10.0。
在打包发布的时候会使用HBuild内置的node,所以是会报错的。
总结来说,我们node_module
下的包是用高版本的node生成的,但是在打包的时候使用的HBuild里面的低版本的node,所以就会找不到需要的东西。
解决问题
解决的方法有多种,但我们这里已经使用了npm的形式开发,那么我们打包最好还是保持同样的环境,省的麻烦。
所以我们告诉HBuild使用我们本机的node即可。
ps: 注意这里是mac下的解决方法。
首先进入HBuild自带的node下面,将node重命名即可备份:
1 | $ cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node |
然后添加本机node的软链接:
1 | ln -s /usr/local/bin/node /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node/node |
然后重启HBuild,再次打包,会发现正确打包了,nice~