uniCloud云函数公用模块

uniCloud云函数公用模块

HBuilderX 2.6.6-alpha起,uniCloud提供了云函数模块公用方案。以下面的目录结构为例,介绍一下如何使用。

|--cloudfunctions
  |--common // 云函数公用模块目录
    |--hello-common // 云函数公用模块
      |--package.json
      |--index.js // 公用模块代码,可以不使用index.js,修改 package.json 内的 main 字段可以指定此文件名
  |--use-common // 使用公用模块的云函数
    |--package.json // 在 use-common 目录执行 npm init -y 生成
    |--index.js // 云函数入口文件

创建并引入公用模块

  1. cloudfunctions目录下创建common目录
  2. common目录右键创建公用模块目录(本例中为hello-common,见下方示例图),会自动创建入口index.js文件和package.json不要修改此package.jsonname字段
  3. hello-common右键上传公用模块
  4. 在要引入公用模块的云函数目录(本例中为use-common)执行npm init -y生成package.json文件
  5. use-common目录执行npm install ../common/hello-common引入hello-common模块
  • index.js
module.exports = {
    secret: 'abcdefg',
    getVersion: function(){
        return '1.0.0'
    }
}
  • package.json
{
  "name": "hello-common",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

新建公共模块

注意事项

  • 如需修改公用模块需要在common目录下修改,修改之后不需要重新执行npm install
  • 如果要更新所有依赖某公用模块的云函数,可以在common目录下的公用模块目录(本例中为hello-common)右键选择更新依赖本模块的云函数
  • 公用模块命名不可与Node.js内置模块重名
  • 安装公用模块时不推荐使用yarn,与npm install表现不一样,yarn不会创建软链接而是直接拷贝文件到node_modules,这样会导致修改公用模块云函数内引用的公用模块不会同步修改
  • 从插件市场导入或者其他地方复制项目可能会导致npm install创建的软链接失效,如果遇到这种情况请删除node_modulespackage-lock.json重新npm install

更新依赖本模块的云函数

使用公用模块

仍以上面的目录为例,在公用模块内exports,在云函数内require即可。示例代码如下:

// common/hello-common/index.js
function getVersion() {
  return '0.0.1'
}
module.exports = {
  getVersion,
  secret: 'your secret'
}
// use-common/index.js
'use strict';
const {
  secret,
  getVersion
} = require('hello-common')
exports.main = async (event, context) => {
  let version = getVersion()
  return {
    secret,
    version
  }
}

如果仅需要导出一个function还可以使用以下写法

// common/hello-common/index.js
module.exports = function(e){
  return e
}
// use-common/index.js
'use strict';
const echo = require('hello-common')
exports.main = async (event, context) => {
  let eventEcho = echo(event)
  return {
    eventEcho
  }
}

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/18/unicloud-cloud-function-common-module/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
uniCloud云函数公用模块
uniCloud云函数公用模块 自HBuilderX 2.6.6-alpha起,uniCloud提供了云函数模块公用方案。以下面的目录结构为例,介绍一下如何使用。 |--cloudfunctions |-……
<<上一篇
下一篇>>
文章目录
关闭
目 录