收藏
回答

云开发QuickStart运行报错

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小游戏 Bug 工具 wx3f3e29dc83b69f59 2.2.5

我新建云开发QuickStart项目,按照README.md中的提示进行操作,运行时云函数报错:

upload score failed Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -504002, error message Cannot find module 'wx-server-sdk'; at cloud.callFunction api;


看样子像是服务端nodejs没安装所依赖的'wx-server-sdk'模块.


怎么才能把QuickStart项目正常运行起来?

最后一次编辑于  2018-09-11  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

19 个回答

  • 邓坤力
    邓坤力
    2018-09-11

    在 uploadScore 目录下执行 npm install 安装下依赖,报错是 require 不到 wx-server-sdk

    2018-09-11
    赞同 11
    回复 14
    • NevermoreReal
      NevermoreReal
      2018-09-11

      npm install 不是要在服务器的命令行下运行吗?

      云开发控制台里面访问不到服务器命令行,怎么弄?

      2018-09-11
      赞同
      回复
    • 邓坤力
      邓坤力
      2018-09-11回复NevermoreReal

      就在本地目录下安装,上传的时候会一起上传上去

      2018-09-11
      赞同
      回复
    • NevermoreReal
      NevermoreReal
      2018-09-11回复邓坤力

      依赖上传了还是报错:

      upload score failed Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -504002, error message wx is not defined; at cloud.callFunction api



      2018-09-11
      赞同
      回复
    • 邓坤力
      邓坤力
      2018-09-11回复NevermoreReal

      在云函数中使用了 wx 这个对象?在云函数运行环境中是没有这个对象的

      2018-09-11
      赞同
      回复
    • NevermoreReal
      NevermoreReal
      2018-09-11回复邓坤力

      看uploadScore/index.js中的代码,第12行,我没动过:


      // 云函数入口文件

      const cloud = require('wx-server-sdk')


      // 与小程序端一致,均需调用 init 方法初始化

      cloud.init()


      // 可在入口函数外缓存 db 对象

      const db = cloud.database()


      // 数据库查询更新指令对象

      const _ = db.command

      wx.cloud = false


      // 云函数入口函数

      exports.main = async (event, context) => {


        // 以 openid-score 作为记录 id

        const docId = `${event.userInfo.openId}-score`


        let userRecord


        try {

          const querResult = await db.collection('score').doc(docId).get()

          userRecord = querResult.data

        } catch(err) {

          // 用户第一次上传分数

        }


        if (userRecord) {

          // 更新用户分数


          const maxScore = userRecord.scores.concat([event.score]).reduce((acc, cur) => cur > acc ? cur : acc)


          const updateResult = await db.collection('score').doc(docId).update({

            data: {

              // _.push 指往 scores 数组字段尾部添加一个记录,该操作为原子操作

              scores: _.push(event.score),

              max: maxScore,

            }

          })


          if (updateResult.stats.updated === 0) {

            // 没有更新成功,更新数为 0

            return {

              success: false

            }

          }


          return {

            success: true,

            updated: true

          }


        } else {

          // 创建新的用户记录

          await db.collection('score').add({

            // data 是将要被插入到 score 集合的 JSON 对象

            data: {

              // 这里指定了 _id,如果不指定,数据库会默认生成一个

              _id: docId,

              // 这里指定了 _openid,因在云函数端创建的记录不会默认插入用户 openid,如果是在小程序端创建的记录,会默认插入 _openid 字段

              _openid: event.userInfo.openId,

              // 分数历史

              scores: [event.score],

              // 缓存最大值

              max: event.score,

            }

          })


          return {

            success: true,

            created: true,

          }

        }

      }


      2018-09-11
      赞同
      回复
    查看更多(9)
  • 星
    02-21

    1、注释wx.cloud = false


    2、上传并部署(云端安装依赖)


    02-21
    赞同 11
    回复
  • 火柴头
    火柴头
    2018-10-29

    npm install 安装下依赖,意思是安装哪些依赖

    2018-10-29
    赞同
    回复 1
    • NevermoreReal
      NevermoreReal
      2018-11-13

      全都安装,自动的

      2018-11-13
      赞同
      回复
  • 你拥我暖i
    你拥我暖i
    01-08

    解决了吗?@NevermoreReal

    01-08
    赞同
    回复