Megajs 0.17.2版本的root属性已损坏
我在我的Node.js程序中使用megaJS 0.17.2,但似乎根对象没有作为一个属性添加到存储(megaDB)对象中,如下所示的initMega() 函数的代码片段:
async function initMega(){
const { Storage } = require('megajs');
try {
let megaDB = new Storage({
email: process.env.MEGA_EMAIL,
password: process.env.MEGA_PASSWORD
});
megaDB.on('ready', () => {
console.log("MEGA filesystem loaded.");
console.log(Object.keys(megaDB)); //As you can see, it is run in the 'ready' event, so it should display inbox trash and root among others
//root = megaDB.root; The root property is broken, so this line is also broken.
});
console.log("MEGA connected");
return megaDB;
} catch (err) {
console.error("Mega failure: " + err);
setTimeout(initMega, 3000);
}
}
有人知道为什么根属性没有出现吗?
解决方案
问题在于你在它准备好之前就返回 megaDB,并且 ready 事件在存储已完全加载后异步触发。在megaJS 0.17.2中,你需要显式调用 megaDB.ready(一个Promise)或在根对象被填充之前等待该事件。
async function initMega(){
const { Storage } = require('megajs');
try {
let megaDB = new Storage({
email: process.env.MEGA_EMAIL,
password: process.env.MEGA_PASSWORD,
autologin: false // Prevent auto-login so we control the flow
});
// Explicitly trigger login and wait for it
await megaDB.login();
console.log("MEGA filesystem loaded.");
console.log(Object.keys(megaDB)); // root, inbox, trash should now appear
console.log("Root:", megaDB.root); // Should work correctly now
console.log("MEGA connected");
return megaDB;
} catch (err) {
console.error("Mega failure: " + err);
setTimeout(initMega, 3000);
}
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。