You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Error] Plugin failure: modules
TypeError: undefined is not an object (evaluating 'sjt.default.debuglog')
(anonymous function)
(anonymous function)
(anonymous function)
(anonymous function)
(anonymous function)
(anonymous function)
(anonymous function)
(anonymous function)
anonymous
(anonymous function) — app.js:1:2861178
(anonymous function) — app.js:1:258730
a — app.js:1:257553
(anonymous function) (app.js:1:2864826)
(anonymous function) (app.js:1:258730)
s (app.js:1:257600)
/**
* Process a response from the native layer.
*/
cap.fromNative = result => {
returnResult(result); // <------------------
};
else if (typeof storedCall.resolve === 'function') {
// promise
if (result.success) {
storedCall.resolve(result.data); // <------------------
}
else {
storedCall.reject(result.error);
}
// no need to keep this stored callback
// around for a one time resolve promise
callbacks.delete(result.callbackId);
}
Replace /.obsidian/plugins/modules/main.js with → main.js
🤖:
Found it. The package is Wes Van Vugt's WesVanVugt/promise-pool-executor. The uncompiled source is in WesVanVugt/promise-pool-executor (ts/). The three buggy lines:
Original (uncompiled)
ts/private/utils.ts
importutilfrom"util";exportconstdebug=util.debuglog("promise-pool-executor");exportconstisNull=(val: unknown): val is null|undefined=>val===undefined||val===null;
Same transformation the plugin's build already applies to promise-batcher, applied here — each becomes:
constdebug=util?.[Symbol()]??(()=>{});
i.e. util.debuglog(...) (which crashes when util is undefined on mobile) → optional-chained unique-symbol access that always short-circuits to a no-op logger:
Note: [Symbol()] approach disables debug logging on desktop too (harmless, matches the promise-batcher precedent); a gentler source fix would be util?.debuglog("promise-pool-executor") ?? (() => {}) to keep logging where util exists.
🤖
Each .default.debuglog("...") call became ?.[Symbol()]??(()=>{}) — optional chaining short-circuits to undefined when util is missing (mobile), and ?? (()=>{}) supplies a no-op logger.
Hi, The solution @karmeye provided did work for me.
I just wanted to directly change the main.js file i did replace these three lines like this: sjt.default.debuglog("promise-pool-executor") => typeof sjt!="undefined" && sjt.default!=null ? sjt.default.debuglog("promise-pool-executor") : (() => {}) ujt.default.debuglog("promise-pool-executor:task") => typeof ujt!="undefined" && ujt.default!=null ? ujt.default.debuglog("promise-pool-executor:task") : (() => {}) mjt.default.debuglog("promise-pool-executor:pool") => typeof mjt!="undefined" && mjt.default!=null ? mjt.default.debuglog("promise-pool-executor:pool") : (() => {})
Activity
stef-rausch commentedon Aug 24, 2026
I can confirm having the same issue.
karmeye commentedon Sep 19, 2026
Temporary fix by AI (see below).
Replace
/.obsidian/plugins/modules/main.jswith → main.jsMostafaBJN commentedon Oct 18, 2026
Hi, The solution @karmeye provided did work for me.
I just wanted to directly change the main.js file i did replace these three lines like this:
sjt.default.debuglog("promise-pool-executor")=>typeof sjt!="undefined" && sjt.default!=null ? sjt.default.debuglog("promise-pool-executor") : (() => {})ujt.default.debuglog("promise-pool-executor:task")=>typeof ujt!="undefined" && ujt.default!=null ? ujt.default.debuglog("promise-pool-executor:task") : (() => {})mjt.default.debuglog("promise-pool-executor:pool")=>typeof mjt!="undefined" && mjt.default!=null ? mjt.default.debuglog("promise-pool-executor:pool") : (() => {})