首先我在main.js中这样定义了一个全局变量。
[JavaScript] 纯文本查看 复制代码 const cloudbaseApp = cloudbase.init({ env: 'my-env' });
await cloudbaseApp.auth().anonymousAuthProvider().signIn().then(() => {
console.log('成功连接云端')
});
app.provide('global', { cloudbase: cloudbaseApp });
然后我在*.vue中可以这样成功调用这个变量。
[JavaScript] 纯文本查看 复制代码 import { inject } from 'vue';
const global = inject('global'), { cloudbase } = global;
但我的问题是需要在JS文件中调用。
结构大概是这样的,我在*.vue中调用一个JS:
[JavaScript] 纯文本查看 复制代码 import { uploadImageAdapter } from "../assets/js/uploadImageAdapter";
但我的问题是需要在JS文件中调用。
JS文件大概是这样的:
[JavaScript] 纯文本查看 复制代码 import { inject } from 'vue';
const global = inject('global'), { cloudbase } = global;
class uploadImageAdapter {
constructor(loader) {
this.loader = loader;
}
// 启动上传
async upload() {
const testToCloud = await cloudbase.callFunction({
name: 'webCloud',
data: {
target: 'staff/login',
data: {
phoneNumber: 'strPhone.value',
password: 'md5(srtPassword.value)'
}
}
})
console.log('testToCloud', testToCloud);
return { default: testToCloud };
}
// 中止上载
abort() {
console.log('中止')
}
}
export { uploadImageAdapter };
以上,我尝试用同样的方法访问全局变量,但报错TypeError: Cannot destructure property 'cloudbase' of 'global' as it is undefined.
所以,如果我要在该JS文件中调用全局的cloudbase,应该怎么写?请大佬指教,感谢。
|