lissy93/web-check · warning · Error
Unable to find any technologies for site
Error message
Unable to find any technologies for site
What it means
techStackHandler runs Wappalyzer against the URL; if analysis completes but yields no technologies (empty or absent array), this error is thrown. Note the surrounding catch: browser/Chromium problems are converted to { skipped }, but an empty result is treated as a hard failure.
Source
Thrown at api/tech-stack.js:33
process.env.CHROMIUM_BIN = await chromium.executablePath();
// Avoid conflict with @sparticuz/chromium's extraction path at /tmp/chromium
if (!process.env.CHROMIUM_DATA_DIR) {
process.env.CHROMIUM_DATA_DIR = '/tmp/chromium-data';
}
}
};
const techStackHandler = async (url) => {
await ensureChromiumBin();
const { default: Wappalyzer } = await import('wappalyzer');
const wappalyzer = new Wappalyzer({});
try {
await wappalyzer.init();
const site = await wappalyzer.open(url, {}, { local: {}, session: {} });
const results = await site.analyze();
if (!results.technologies || results.technologies.length === 0) {
throw new Error('Unable to find any technologies for site');
}
return results;
} catch (error) {
if (/ENOENT|Browser was not found|Could not find Chromium/i.test(error.message)) {
return { skipped: error.message };
}
throw new Error(error.message);
} finally {
await wappalyzer.destroy();
}
};
export const handler = middleware(techStackHandler);
export default handler;
View on GitHub (pinned to af1a97759f)
Solutions
- Verify manually (view-source, response headers) whether the site truly exposes detectable fingerprints; if not, the error is correct signal
- If it is an SPA, increase wait/analysis time before concluding no technologies were found
- Treat this as a soft result ({ technologies: [] }) in the caller rather than an exception
Example fix
// before
const results = await techStackHandler(url); // throws on zero technologies
// after
let results;
try { results = await techStackHandler(url); }
catch (e) { if (e.message === 'Unable to find any technologies for site') results = { technologies: [] }; else throw e; } Defensive patterns
Strategy: try-catch
Validate before calling
null
Type guard
const hasTechnologies = (r) => !!r && Array.isArray(r.technologies) && r.technologies.length > 0;
Try / catch
try { const r = await techStackHandler(url); }
catch (e) {
if (e.message === 'Unable to find any technologies for site') return { technologies: [], note: 'no fingerprints detected' };
throw e;
} Prevention
- Treat empty detection as a valid outcome, not a failure
- For SPAs, allow longer wait before analysis before concluding nothing was found
- Keep Wappalyzer rules updated; stale rules miss newly-released frameworks
When it happens
Trigger: Sites built with frameworks Wappalyzer cannot fingerprint (static HTML, heavily custom stacks), SPA shells that finish analysis before chunks load, or intranet pages where few fingerprints match.
Common situations: Simple brochure sites, custom CMSes without known signatures, newly-released frameworks not in the Wappalyzer ruleset, or aggressive bot-blocking causing degraded page loads that still succeed nominally.
AI-assisted analysis of lissy93/web-check@af1a97759f (2026-08-27).
Data as JSON: /api/errors/bd01bb334a40abee.
Report an issue: GitHub.