Function.prototype.apply was called on WeakMap.prototype.get

最近接手了一个老项目,uni-app开发的小程序,安装依赖的之后使用idea 可以编译到微信开发者工具报错:

1: app.js错误:TypeError: Function.prototype.apply was called on WeakMap.prototype.get, which is a string and not a function。

这个问题查了好久,最后就是确定是一个依赖qs 的版本不兼容,
执行:


npm i qs@6.9.6

在package.json 里面修改版本6.9.6,然后重新安装,可以解决此问题。


2: 解决上述问题,在hbuilder 运行之后显示node-sass版本问题

Node Sass could not find a binding for your current environment: OS X 64-bit with Node.js 8.x

此问题问题出在HBuild有个内置的node,HBuild有个内置的node是v8,开发时依赖的node是高版本的,打包发布的时候会使用HBuild内置的node,所以是会报错的。所以我们告诉HBuild使用我们本机的node即可。打开终端,依次执行下面代码:

 cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node  

mv node node-v8

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

重新安装打包就可以正常编译了。


有话要说