收藏
回答

云函数调用startTransaction()启用数据库事务,部署后调用失败的原因?

云函数调用startTransaction()引用数据库事务,安装"wx-server-sdk": "^1.7.0,云函数本地调试可以成功调用。

但上传并部署(所有文件)调用则报错,请问什么原因?

{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"transaction is not defined\nReferenceError: transaction is not defined\n at EventHandler.exports.main [as realHandler] (/var/user/index.js:92:5)\n at \u003canonymous\u003e\n at process._tickCallback (internal/process/next_tick.js:188:7)"}

最后一次编辑于  2019-12-26
回答关注问题邀请回答
收藏

2 个回答

  • 见相非相
    见相非相
    2019-12-27

    我的也报了,但是在另外一个纯云函数里没有。报错的这个云函数是里面包含了很多请求,根据参数来switch到不同的方法里,你的也是这样写的吗?云函数自身的返回结果log和你的一样,但是我catch到的错误如下

    { code: 'SIGN_PARAM_INVALID',

    message: 'envname field not exsit in url' }

    ReferenceError: transaction is not defined


    2019-12-27
    赞同
    回复 4
    • 见相非相
      见相非相
      2019-12-27
      我找到原因了,是环境初始化的时候,指定一下环境名称就行了。这个环境变量也太不稳定了吧,别的都可以,这个要指定一下。半年多之前也是非常不稳定,难道是昨天服务器全部挂掉导致公众号挂掉然后云开发也受到了影响?
      2019-12-27
      回复
    • Frank坤
      Frank坤
      2019-12-27
      受你的启发,验证了一下,cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV})对于事务就无效,指定了具体的环境ID cloud.init({env: 'xxxxxx-s1oaq'})就可以了,应该是一个BUG。
      “transaction is not defined”这个错误是官方demo有问题,const transaction = await db.startTransaction() 放在try的里面,catch里面肯定找不到
      2019-12-27
      回复
    • 见相非相
      见相非相
      2019-12-27回复Frank坤
      有点奇怪,我另外一个云函数的事务指定动态环境是可以的,这个云函数就不行,说到底还是腾讯云不稳定...哈哈哈
      2019-12-27
      回复
    • 邓坤力
      邓坤力
      1天前回复Frank坤
      感谢反馈,这个在最新 wx-server-sdk 已修复
      1天前
      回复
  • 老张
    老张
    2019-12-26

    这就开始用了。哥们你是先驱啊,应该你来帮别人答疑的。

    2019-12-26
    赞同
    回复 2
    • Frank坤
      Frank坤
      2019-12-26
      正好需要解决事务问题,官方就出来了,看来我要再等等了( ^_^ )
      2019-12-26
      回复
    • 老张
      老张
      2019-12-27回复Frank坤
      用吧用吧,踩坑填坑,大家都这样。
      2019-12-27
      回复
登录 后发表内容
问题标签