微信小程序云开发云函数常见问题及解决方案
我们在做微信小程序云开发的过程中,总会遇到各种奇葩的问题。今天就把我在小程序云开发过程中遇到的各种问题,及对应的解决方案总结在这里,方便以后自己回顾,也方便大家查看。
一,云函数调用失败问题(404011)
[云函数] [login] 调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -504002, error message Function not found: [login]; at cloud.callFunction api;
通常出现这种问题无非是下面2个原因
1,云函数没有部署,或者没有部署成功
2,你创建了多个云开发环境,没有配置对应的环境id
下面就针对这两个问题,具体说下解决方案
1,云函数没有部署,或者没有部署成功
选中我们要部署的云函数,右键,如上图红色框里所示。如果点一次不能上传,就多点几次,一直到出现下面提示框为止
2,你创建了多个云开发环境,没有配置对应的环境id
如果你创建了多个云开发环境,有时候开发者工具会脑残的不知道该选择使用那个云开发环境,这个时候,我们就要指定云开发环境了。
如果你是多个开发环境,一定要注意环境名,和环境id必须一一对应。
二,云数据库set或者update数据时报如下错误(502001)
Error: errCode: -502001 database request fail | errMsg: [FailedOperation.Insert] multiple write errors: [{write errors: [{E11000 duplicate key error collection: tnt-12p3936xo.x-j-l index: id dup key: { : "xjl" }}]}, {<nil>}]
详细错误如下图:
错误原因
造成这种错误的主要原因是因为,你修改的这条数据不是你创建的。我们直接操作云数据库时,在数据库里设置里如下权限。
这个权限只能让你读所有人的数据,但是修改的话,你还是只能修改自己创建的数据。什么样的数据才是自己创建的呢。如下图。
所以到这里我们就大概明白如何解决这个问题了。
解决方案
1,把_openid改为自己的openid
2,借助云函数。
这里说下借助云函数,因为你是没有办法直接修改别人的数据的,但是你借助云函数的话,就可以修改任何人的数据。
三,云函数老是不能上传成功,或者上传成功后是错误的。
如果你上传云函数老是报上面的错误,就先关闭开发者工具。然后再打开,开发者工具,进入云开发管理界面,把错误的云函数删除了。
然后再到你的代码目录里做下同步。
这样我们就可以重新上传我们的pay函数了。
上传云函数时,一定要记得选择如上图箭头所指的。
上传的时候,会有下面这个提示,可以忽略不管。
出现下图就代码你云函数上传成功了。
四, -404011 error message wx is not defined
问题是出在云函数里,就是你在云函数里使用数据库请求的时候代码写成下面这样了。
解决方法
我们在云函数里使用cloud.database时,不用再写wx.cloud了,直接写成cloud.database就可以了。只有在小程序的页面的js里使用时,才需要写成 wx.cloud.database******
五,-502005 Db or Table not exist. Please check your request, but if the problem cannot be solved, contact us
错误信息如下图所示
其实这个问题算是官方的一个bug,因为我在app.js里已经初始化过了,但是这里找不到db或者数据表的原因还是因为我没有初始化过。奇怪的是这个问题我电脑上是没问题的,但是我的一些学员电脑上就会有这个问题。
解决方法
这个解决方法就是在你云函数里再做下初始化。
云开发视频讲解
https://edu.csdn.net/course/detail/9604