FlowiseAI/Flowise · error · Error

No extraction path configured

Error message

No extraction path configured

What it means

Thrown by JSONPathExtractorTool._call when this.path is falsy AND returnNullOnError is false. The tool is constructed with a path in init (which itself guards against empty path via error 387), so reaching here at call time means the path was set to an empty string after construction — e.g. the field was cleared, a dynamic re-init ran with an empty value, or an extension subclassed the tool with path=''. The returnNullOnError flag is the explicit escape hatch that converts this throw into a 'null' return.

Source

Thrown at packages/components/nodes/tools/JSONPathExtractor/JSONPathExtractor.ts:35

            .describe('JSON data to extract value from')
    })

    private readonly path: string
    private readonly returnNullOnError: boolean

    constructor(path: string, returnNullOnError: boolean = false) {
        super()
        this.path = path
        this.returnNullOnError = returnNullOnError
    }

    async _call({ json }: z.infer<typeof this.schema>): Promise<string> {
        // Validate that path is configured
        if (!this.path) {
            if (this.returnNullOnError) {
                return 'null'
            }
            throw new Error('No extraction path configured')
        }

        let data: any

        // Parse JSON string if needed
        if (typeof json === 'string') {
            try {
                data = JSON.parse(json)
            } catch (error) {
                if (this.returnNullOnError) {
                    return 'null'
                }
                throw new Error(`Invalid JSON string: ${error instanceof Error ? error.message : 'Parse error'}`)
            }
        } else {
            data = json
        }

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Set the JSON Path input in the node (e.g. 'data', 'user.name', 'items[0].id').
  2. If empty path is a legitimate runtime state, enable Return Null on Error so the tool emits 'null' instead of throwing.
  3. If constructing the tool directly, pass a non-empty path to the constructor.
  4. Trace the upstream variable feeding path and add a default value.

Example fix

// before
new JSONPathExtractorTool('', false)
// after
new JSONPathExtractorTool('data.result', false)
Defensive patterns

Strategy: validation

Validate before calling

function makeExtractor(path: string, returnNullOnError = false) {
  if (!path || !path.trim()) throw new Error('path is required — set it before constructing JSONPathExtractorTool')
  return new JSONPathExtractorTool(path.trim(), returnNullOnError)
}

Type guard

function hasNonEmptyPath(o: { path?: unknown }): o is { path: string } {
  return typeof o.path === 'string' && o.path.trim().length > 0
}

Try / catch

try {
  return await extractor.invoke({ json })
} catch (e) {
  if (e instanceof Error && e.message === 'No extraction path configured') {
    return 'null' // or reconfigure with a default path
  }
  throw e
}

Prevention

When it happens

Trigger: The node's JSON Path input was left blank or filled with whitespace, or the tool instance was constructed programmatically with '' as path (bypassing the init guard). At _call time, the empty path makes lodash.get meaningless, so the tool refuses rather than silently returning the whole object.

Common situations: A flow where the path is wired from an upstream variable that resolves to empty; a copied node whose path field wasn't updated; programmatic use of JSONPathExtractorTool without going through the INode.init path.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/47869e604afc4858. Report an issue: GitHub.