mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
const path = require('path');
|
|
const { pathToFileURL } = require('url');
|
|
|
|
async function loadScriptModule(scriptPath) {
|
|
const resolvedPath = path.resolve(String(scriptPath || ''));
|
|
if (!resolvedPath) {
|
|
throw new Error('scriptPath is required');
|
|
}
|
|
|
|
let requiredModule = null;
|
|
let requireError = null;
|
|
try {
|
|
requiredModule = require(resolvedPath);
|
|
} catch (error) {
|
|
requireError = error;
|
|
}
|
|
|
|
const imported = async () => {
|
|
const moduleURL = pathToFileURL(resolvedPath).href;
|
|
return await import(`${moduleURL}?t=${Date.now()}`);
|
|
};
|
|
|
|
if (requiredModule && typeof requiredModule.run === 'function') {
|
|
return requiredModule;
|
|
}
|
|
if (typeof requiredModule === 'function') {
|
|
return { run: requiredModule };
|
|
}
|
|
if (requiredModule && requiredModule.default && typeof requiredModule.default.run === 'function') {
|
|
return requiredModule.default;
|
|
}
|
|
|
|
try {
|
|
const importedModule = await imported();
|
|
if (importedModule && typeof importedModule.run === 'function') {
|
|
return importedModule;
|
|
}
|
|
if (importedModule && typeof importedModule.default === 'function') {
|
|
return { run: importedModule.default };
|
|
}
|
|
if (
|
|
importedModule &&
|
|
importedModule.default &&
|
|
typeof importedModule.default.run === 'function'
|
|
) {
|
|
return importedModule.default;
|
|
}
|
|
} catch (importError) {
|
|
if (requireError) {
|
|
throw requireError;
|
|
}
|
|
throw importError;
|
|
}
|
|
|
|
if (requireError) {
|
|
throw requireError;
|
|
}
|
|
throw new Error('script must export run()');
|
|
}
|
|
|
|
module.exports = { loadScriptModule }; |