使用微信云托管时,小程序一版在app.js的onLaunch方法里加下面初始化处理,就可以在各个页面上调用对应的云后台了。
// 云开发的初始化
wx.cloud.init({
env: '{微信云托管的环境ID}'
});
如果配置资源服用,要调用其他小程序(小程序A)关联的云托管,在app.js的onLaunch方法里按照下面的写法,在实机上是正常的,通过app.cloud可以正常调研对于云后台的。(注:onLaunch需要加async)
const c1 = new wx.cloud.Cloud({
resourceAppid: '{小程序A的AppID}',
resourceEnv: '{微信云托管的环境ID}',
});
await c1.init();
this.cloud = c1;
但是,在“微信开发者工具”上,这种写法却一直出错,控制台出了下面这样的错误消息而已。
TypeError: Cannot read property 'callContainer' of undefined
显然是没正常初始化,cloud是undefined得来的消息的。但是什么原因导致的呢?
虽然实机没问题,但是开发者工具不好使,开发起来是挺不方便的。
有没有了解的大牛啊,先谢过了
突然发现,更新开发者工具后,问题自动消失了。感觉是开发工具的问题了。
更新后版本是 1.06.2402021darwin-arm64。
另外,ChatGPT也给回答了。大概代码如下:
async和await的写法:
async onLaunch() { const c1 = new wx.cloud.Cloud({ resourceAppid: 'abcdefg', resourceEnv: '1234567', }); await c1.init(); this.cloud = c1; }
Promise的写法(不使用async和await):
onLaunch() { const c1 = new wx.cloud.Cloud({ resourceAppid: 'abcdefg', resourceEnv: '1234567', }); c1.init() .then(() => { this.cloud = c1; // 在这里继续执行后续的逻辑 }) .catch(error => { // 处理初始化失败的情况 console.error('Initialization error:', error); }); }