# 8、config 升级 uni-config-center 模块

为了响应官方uni-config-center 模块的推动,现框架的配置中心升级为uni-config-center 模式。此次升级也是为后续升级做铺垫。

注意:本次更新目录结构改动较大,可能你漏一步后运行会报错,这时别慌,来群包解决:22466457

# 快速升级教程(优势:简单)

  • 1、右键项目根目录的package.json,点击从插件市场更新,即可一键升级 (但需要注意文件的替换,切记仔细对比,不要直接点合并)
  • 2、上传uni-config-center公共模块
  • 3、在cloudfunctions/router/目录执行 npm i
  • 4、上传router云函数
  • 5、完成。(可以尝试运行项目看是否有报错,有问题可以进群解决:22466457,如没有问题,则可以删除原先的 config 模块了)

# 手动升级教程

  • 1、右键uni_modules目录,点击从插件市场更新所有插件
  • 2、cloudfunctions/common/uni-config-center/ 的根目录新建目录vk-unicloud
  • 3、cloudfunctions/common/uni-config-center/vk-unicloud/ 目录新建文件index.js(注意文件名是index.js,不是config.js)代码如下(请重新配置下配置信息)
const uniIdConfig = require('../uni-id/config.json');
module.exports = {
  uni: uniIdConfig,
  vk: {
    system: {
      // 若serviceShutdow:true,则所有云函数无法访问(适用于需要临时关闭后端服务的情况,如迁移数据)
      // 注意:本地调试时,需要重新启动本地服务才能生效。
      serviceShutdown: false,
      serviceShutdownDescription: '系统维护中,预计2小时恢复!',
    },
    service: {
      // 邮箱发送服务
      email: {
        // qq邮箱参数配置
        qq: {
          host: 'smtp.qq.com',
          port: 465,
          secure: true,
          auth: {
            user: '你的邮箱@qq.com',
            pass: '邮箱授权码',
          },
        },
      },
      // 日志服务
      log: {
        // 用户登录日志
        login: {
          status: true, // 是否开启用户登录日志
        },
      },
      // 短信服务
      sms: {
        // 阿里云短信服务
        aliyun: {
          enable: false, // 是否使用阿里云短信代替unicloud短信发送短信验证码
          accessKeyId: '', // 短信密钥key
          accessKeySecret: '', // 短信密钥secret
          signName: '', // 默认签名
          templateCode: {
            verifyCode: '', // 验证码短信模板 - 配合uni-id需要
          },
        },
      },
      // 开放平台api
      openapi: {
        // 百度开放平台 (主要用于身份证识别,营业执照识别等API)
        // API Key申请地址:https://cloud.baidu.com/doc/OCR/s/rk3h7xzck 点击右上角注册
        baidu: {
          appid: '', // 对应的API Key
          appsecret: '', // 对应的Secret Key
        },
      },
    },
    db: {
      unicloud: {
        maxLimit: 500, // 最大limit限制(目前腾讯云最大1000,阿里云最大500)
        cancelAddTime: false, // 取消vk.baseDao.add 时自动生成_add_time和_add_time_str
      },
    },
    // 其他小程序的密钥 当需要多个小程序绑定同一服务空间,并调用小程序服务端API时需要填写 暂只支持微信小程序
    oauth: {
      // 微信小程序
      weixin: {
        // 密钥列表
        list: [
          {
            appid: '',
            appsecret: '',
          },
          {
            appid: '',
            appsecret: '',
          },
        ],
      },
    },
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  • 4、重新配置下cloudfunctions/common/uni-config-center/uni-id/config.json 的 uni-id 配置(此文件内不可写注释)

  • 5、修改cloudfunctions/router/config.js 文件内的代码

替换前:

const createConfig = require('uni-config-center'); // 获取全局配置信息
const config = createConfig({ pluginId: 'vk-unicloud' }).requireFile('index.js');
const uniID = require('uni-id'); // uni-id 公共模块
uniID.init(config['uni']); // 初始化uni-id
const uniPay = require('uni-pay'); // uni-pay 公共模块
const db = uniCloud.database(); // 获取数据库实例
const pubFun = require('./util/pubFunction'); // 自定义公共函数
const urlrewrite = require('./util/urlrewrite'); // url重写(内部转发)
// 自定义过滤器(中间件)
const middlewareService = require('./middleware/index');
// 数据库操作中心
const daoCenter = require('./dao/index');
// 加密解密工具包
const crypto = require('crypto');
const requireFn = function (path) {
  return require(path);
};
const initConfig = {
  baseDir: __dirname, // 云函数根目录地址
  requireFn,
  config,
  uniID,
  uniPay,
  db,
  pubFun,
  urlrewrite,
  middlewareService,
  daoCenter,
  crypto,
  // customUtil :{
  // 	mynpm1:mynpm1
  // }
};
module.exports = initConfig;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

替换后:

const requireFn = function (path) {
  return require(path);
};
const initConfig = {
  baseDir: __dirname, // 云函数根目录地址
  requireFn,
  customUtil: {
    // 你自己的工具包,写这里后即可听过customUtil.mynpm1调用
    // mynpm1:mynpm1
  },
};
module.exports = initConfig;
1
2
3
4
5
6
7
8
9
10
11
12
  • 6、删除cloudfunctions/router/package.json文件内的以下代码
"config": "file:../common/config",
1
  • 7、删除cloudfunctions/router/package-lock.json 文件和 cloudfunctions/router/node_modules 目录
  • 8、上传uni-config-center公共模块
  • 9、在cloudfunctions/router/目录执行 npm i
  • 10、上传router云函数
  • 11、完成。(可以尝试运行项目看是否有报错,有问题可以进群解决:22466457,如没有问题,则可以删除原先的 config 模块了)