两个小程序A和B,A开通了云开发,B没开通,A把环境共享给了B。以下代码都是B环境的。
A appid:wx06b0052a0bd58541
B appid: wx7848718d2ee015cd
小程序端在onLaunch初始化:
// 创建跨账号云环境实例
cloud = new wx.cloud.Cloud({
resourceAppid: "wx06b0052a0bd58541",
resourceEnv: "cloud1",
});
if (!cloud) {
error("[云开发] 初始化失败");
return;
}
cloud.init();
用cloud在小程序端去读共享环境的数据库没问题。
编写了一个云函数:
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
traceUser: true,
});
exports.main = async (event) => {
const wxContext = cloud.getWXContext();
const openId = wxContext.OPENID;
console.log(wxContext, cloud.DYNAMIC_CURRENT_ENV);
const shareCloud = new cloud.Cloud({
// 资源方 AppID
resourceAppid: "wx06b0052a0bd58541",
// 资源方环境 ID
resourceEnv: "cloud1",
});
await shareCloud.init();
const res = await shareCloud.database().collection("config").get();
console.log(res);
try {
return {
errCode: 0,
errMsg: "ok",
data: {
openid: openId,
userHelloData: "helloResult.data",
timestamp: Date.now(),
},
};
} catch (error) {
console.error("hello 执行错误:", error);
return {
errCode: -1,
errMsg: `执行异常: ${error.message}`,
};
}
};
把这个云函数部署到共享环境,B小程序里面使用上面初始化的cloud对象调用,能拿到open id,但是云函数里面的读取config集合的查询总是报错:
这个是本地测试报错:Error: errCode: -501001 resource system error | errMsg: getCrossAccountToken:fail [100003] env not exists (fa387b49-8d48-4814-9c02-0614154ebd12)
部署后调用是报错:errCode: -601012 unauthorized env,为什么是未授权呢?我什么配置都对过了,cloudbase_auth函数我是直接返回errCode=0的响应。
云函数里面查询集合不管是用cloud还是shareCloud对象查询都是报错,报错提示有一点差异,单都有env not exists的文字。
appID和环境ID都对过很多遍了,没问题。cloudbase_auth函数也有,不然用户端也不会能查。
什么问题?感觉微信的文档用处不大,照着做都不通。
----------------------------------------------------2026-03-10 00:05分更新-----------------------------------------
微信官方文档真尼玛误人子弟。
只需要小程序端需要new一下环境,这样:new wx.cloud.Cloud
云函数并不需要,直接正常写就行了:
// 被共享方只需要这样使用,云函数是上传到资源方的。
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
traceUser: true,
});
// 不需要下面这样新创建一个cloud环境。
const shareCloud = new cloud.Cloud({
// 资源方 AppID
resourceAppid: "wx06b0052a0bd58541",
// 资源方环境 ID
resourceEnv: "cloud1",
});
await shareCloud.init();

这段代码去掉