uniCloud云函数仅支持CommonJS规范,必须使用exports.main作为唯一入口函数接收event和context参数,禁止import/export、顶层执行及动态require,依赖需显式require且路径带扩展名,配置须通过envVariables注入。

在 uniCloud 云函数中,CommonJS 是唯一支持的模块规范,不能使用 import/export。正确导出的关键是严格遵循 module.exports 或 exports 的语义,并适配云函数的入口约束。
必须用 exports.main 作为统一入口
云函数不接受任意命名的导出,也不执行文件顶层逻辑。所有业务代码必须挂载到 exports.main 上,且该函数需接收 event 和 context 参数:
- ✅ 正确写法:
exports.main = async (event, context) => { /* 你的逻辑 */ } - ❌ 错误写法:
module.exports = { handler: ... }或exports.handler = ... - ❌ 错误写法:直接执行代码(如
console.log("init"))——冷启动时可能被执行多次,且无法响应调用
导出单个函数或对象时的写法差异
如果只导出一个主逻辑,推荐直接赋值给 exports.main;若需复用内部方法,可用 module.exports 统一管理,但最终仍需确保 main 存在:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 导出纯函数(最常用):
exports.main = async function(event, context) { return { code: 0, data: "ok" }; } - 导出带辅助方法的对象(注意不要覆盖 main):
const helper = () => "done"; exports.main = async () => helper(); - 避免误写:
exports = { main: ... }—— 这会断开exports与module.exports的引用,导致云函数无法识别入口
依赖和模块复用要显式 require
云函数内所有外部代码都必须通过 require 加载,包括同目录下的工具文件、公共模块或 npm 包:
立即学习“Java免费学习笔记(深入)”;
- 引入本地文件:
const utils = require("./utils.js");(路径必须带扩展名) - 引入 npm 包:
const _ = require("lodash");(需在package.json中声明依赖) - 引入公共模块:
const db = require("@cloud/db");(需提前在控制台启用并部署) - 禁止动态拼接路径后 require(如
require("./" + name)),部分平台在构建阶段无法静态分析
环境变量和配置不可靠,需主动注入
云函数没有 .env 文件加载机制,process.env 仅包含平台预设变量(如 UNICLOUD_ENV_ID)。敏感配置必须通过 cloudbaserc.json 的 envVariables 字段传入,并在代码中读取:
- 配置示例:
"envVariables": { "API_URL": "https://api.example.com" } - 代码中使用:
const API_URL = process.env.API_URL; - 不要硬编码或尝试从文件读取配置(云函数文件系统为只读)

















