收藏
回答

多个云环境的云函数如何同步

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 需求 客户端 wx51221f3be85fe944 2.3.0

- 需求的场景描述(希望解决的问题)

我有两个环境,开发(dev)和生产(prod),我在开发环境下新建并部署好云函数后,切换到生产环境,需要切换环境并重新上传所有云函数,而且是一个一个上传,这样在云函数较多的情况下维护起来就很麻烦。

- 希望提供的能力

是否可以提供云函数跨环境的迁移功能,或者开放命令行可以一行命令安装全部依赖并上传所有云函数。

还是说我的使用姿势不太对,有更简便的跨环境迁移云函数的能力


回答关注问题邀请回答
收藏

1 个回答

  • 半寸灰
    半寸灰
    2018-10-15

    我的解决办法是写一个 云函数 (router)

    通过

    tcb-router 一个云函数处理所有服务


    所以上传也是一个云函数


    改环境也是改一个哈哈哈    分分钟都能改好






    不是云函数调用云函数

    是云函数根据参数调用一个函数

    详细看这里

    https://github.com/TencentCloudBase/tcb-router

    下面一个粟子




    // 云函数入口文件    函数名router

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

    //  npm  install tcb-router

    const TcbRouter = require('tcb-router');


    const util = require('util.js');



    cloud.init()

    const db = cloud.database();

    const _ = db.command;


    // 云函数入口函数

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



    const app = new TcbRouter({ event });



    /**

      * 登录

      */

    app.router('login', async (ctx, next) => {

    await next();

    }, async (ctx, next) => {

    await next();

    }, async (ctx) => {

    const login = require('login/index.js');

    ctx.body = login.mian(event, context, db, _, util);

    });





    /**

      * 用户列表

      */

    app.router('userList', async (ctx, next) => {

    await next();

    }, async (ctx, next) => {

    await next();

    }, async (ctx) => {

    const userList = require('userList/index.js');

    ctx.body = userList.mian(event, context, db, _, util);

    });




    /**

        * 测试

        */

    app.router('test', async (ctx, next) => {

    await next();

    }, async (ctx, next) => {

    await next();

    }, async (ctx) => {

    const test = require('test/index.js');

    ctx.body = test.mian(event, context, db, _, util);

    });







    return app.serve();




    }




    业务处理js  这里写个测试的   其他的  自行参考


    test/index.js


    // router  目录下面建一个 test目录 这个是  test目录下的index.js

    module.exports = {

    mian: async (event, context, db, _, util) => {



    /**

        * 业务操作

        */



    return { event, context};

    }}




    前端调用


    wx.cloud.callFunction({

    name: 'router',

    data: {

    $url:'test'

    },

    success: res => {

    console.log('test调用成功', res);


    },

    fail: err => {

    console.log('test调用失败', err);



    }

    })









    2018-10-15
    有用
    回复 5
    • 2018-10-16

      云函数里可以调用云函数吗?请问是怎么做的呢?

      2018-10-16
      回复
    • 半寸灰
      半寸灰
      2018-10-16回复

      详细看回答

      2018-10-16
      回复
    • 2018-10-16回复半寸灰

      这个思路挺好的,非常感谢

      2018-10-16
      回复
    • 徐图之
      徐图之
      2020-08-23
      hi 答主,非常受启发的处理方式~ 我也遇到类似的问题,不过我没太想明白这个方式和楼主说的似乎不是一个问题... 因为诸如require(xxx/index.js)的文件还是得在两个环境分别都上传一遍吧?
      2020-08-23
      回复
    • 徐图之
      徐图之
      2020-08-23回复
      hi 楼主,想问一下你的问题解决了吗,是怎么做的,我有点没想明白...
      2020-08-23
      回复
登录 后发表内容