Fix ReferenceError: Cannot access 'renderObsList' before initialization by converting arrow functions to standard hoisted functions
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const html = fs.readFileSync(path.join(__dirname, '../public/index.html'), 'utf8');
|
||||
|
||||
// Mock HTML elements from index.html
|
||||
const elements = {};
|
||||
const matchIds = html.match(/id="([^"]+)"/g) || [];
|
||||
matchIds.forEach(idAttr => {
|
||||
const id = idAttr.split('"')[1];
|
||||
elements[id] = {
|
||||
id,
|
||||
addEventListener: (event, cb) => {},
|
||||
style: {},
|
||||
classList: {
|
||||
add: () => {},
|
||||
remove: () => {},
|
||||
contains: () => false
|
||||
},
|
||||
querySelectorAll: () => []
|
||||
};
|
||||
});
|
||||
|
||||
global.document = {
|
||||
readyState: 'complete',
|
||||
documentElement: {
|
||||
setAttribute: (name, val) => {},
|
||||
getAttribute: (name) => 'dark'
|
||||
},
|
||||
getElementById: (id) => {
|
||||
if (!elements[id]) {
|
||||
console.warn(`[Warning] getElementById: ID "${id}" not found in index.html!`);
|
||||
return null;
|
||||
}
|
||||
return elements[id];
|
||||
},
|
||||
querySelector: (selector) => {
|
||||
return {
|
||||
addEventListener: () => {},
|
||||
style: {},
|
||||
classList: { add: () => {}, remove: () => {} }
|
||||
};
|
||||
},
|
||||
querySelectorAll: (selector) => {
|
||||
return [];
|
||||
},
|
||||
createElement: (tag) => {
|
||||
return { style: {}, classList: { add: () => {} } };
|
||||
},
|
||||
body: {
|
||||
appendChild: () => {}
|
||||
},
|
||||
addEventListener: (event, cb) => {
|
||||
if (event === 'DOMContentLoaded') {
|
||||
cb();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
global.window = {
|
||||
location: { href: '' },
|
||||
speechSynthesis: {
|
||||
getVoices: () => [],
|
||||
addEventListener: () => {}
|
||||
},
|
||||
document: global.document
|
||||
};
|
||||
|
||||
global.localStorage = {
|
||||
getItem: () => null,
|
||||
setItem: () => {},
|
||||
removeItem: () => {}
|
||||
};
|
||||
|
||||
global.marked = {
|
||||
Renderer: function() {},
|
||||
use: () => {}
|
||||
};
|
||||
|
||||
global.navigator = {
|
||||
clipboard: {}
|
||||
};
|
||||
|
||||
// Mock fetch to not crash Node
|
||||
global.fetch = () => new Promise((resolve) => resolve({
|
||||
ok: true,
|
||||
json: () => Promise.resolve({ success: true, observations: [] }),
|
||||
text: () => Promise.resolve('')
|
||||
}));
|
||||
|
||||
try {
|
||||
console.log("Loading public/app.js with proper mock...");
|
||||
require('../public/app.js');
|
||||
console.log("Successfully ran public/app.js without throwing errors!");
|
||||
} catch (err) {
|
||||
console.error("FATAL ERROR running app.js:", err);
|
||||
}
|
||||
Reference in New Issue
Block a user