FlowiseAI/Flowise · warning · Error
No relative links found
Error message
No relative links found
What it means
Puppeteer loader equivalent of [172]: thrown when webCrawl/xmlScrape/selectedLinks produced zero pages to scrape.
Source
Thrown at packages/components/nodes/documentloaders/Puppeteer/Puppeteer.ts:277
}
}
let docs: Document[] = []
if (relativeLinksMethod) {
if (process.env.DEBUG === 'true') options.logger.info(`[${orgId}]: Start PuppeteerWebBaseLoader ${relativeLinksMethod}`)
// if limit is 0 we don't want it to default to 10 so we check explicitly for null or undefined
// so when limit is 0 we can fetch all the links
if (limit === null || limit === undefined) limit = 10
else if (limit < 0) throw new Error('Limit cannot be less than 0')
const pages: string[] =
selectedLinks && selectedLinks.length > 0
? selectedLinks.slice(0, limit === 0 ? undefined : limit)
: relativeLinksMethod === 'webCrawl'
? await webCrawl(url, limit)
: await xmlScrape(url, limit)
if (process.env.DEBUG === 'true')
options.logger.info(`[${orgId}]: PuppeteerWebBaseLoader pages: ${JSON.stringify(pages)}, length: ${pages.length}`)
if (!pages || pages.length === 0) throw new Error('No relative links found')
for (const page of pages) {
const result = await puppeteerLoader(page)
if (result) {
docs.push(...result)
}
}
if (process.env.DEBUG === 'true') options.logger.info(`[${orgId}]: Finish PuppeteerWebBaseLoader ${relativeLinksMethod}`)
} else if (selectedLinks && selectedLinks.length > 0) {
if (process.env.DEBUG === 'true')
options.logger.info(
`[${orgId}]: PuppeteerWebBaseLoader pages: ${JSON.stringify(selectedLinks)}, length: ${selectedLinks.length}`
)
for (const page of selectedLinks.slice(0, limit)) {
const result = await puppeteerLoader(page)
if (result) {
docs.push(...result)
}
}View on GitHub (pinned to abe4a8601a)
Solutions
- Confirm the seed page's static HTML contains links.
- Verify sitemap.xml for xmlScrape.
- Point the seed at a hub/listing page, not a leaf.
- Provide selectedLinks explicitly.
- Fall back to scraping the seed URL directly.
Example fix
// before
if (!pages || pages.length === 0) throw new Error('No relative links found')
// after
if (!pages || pages.length === 0) {
options.logger.warn(`[${orgId}]: No relative links at ${url}; scraping seed only`)
const seedDoc = await puppeteerLoader(url)
if (seedDoc) docs.push(...seedDoc)
} Defensive patterns
Strategy: fallback
Validate before calling
async function seedHasLinks(url) {
const html = await (await fetch(url)).text()
return /<a\s+[^>]*href=/i.test(html)
} Try / catch
let pages = relativeLinksMethod === 'webCrawl' ? await webCrawl(url, limit) : await xmlScrape(url, limit)
if (!pages || pages.length === 0) {
const seedDoc = await puppeteerLoader(url)
if (seedDoc) docs.push(...seedDoc)
} Prevention
- Seed webCrawl at a page that lists links.
- Confirm sitemap.xml for xmlScrape.
- Provide selectedLinks when discovery is unreliable.
- Render the page (Puppeteer) before harvesting links for SPAs.
When it happens
Trigger: webCrawl found no same-domain anchors; sitemap.xml empty/missing; selectedLinks empty after filtering; target is a JS SPA with no static links.
Common situations: SPA sites; disabled/missing sitemap; crawler blocked; selectedLinks input not wired.
Related errors
- No relative links found
- No relative links found
- Invalid URL
- Limit cannot be less than 0
- Limit cannot be less than 0
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/ba3b4e2c669b180a.
Report an issue: GitHub.