FlowiseAI/Flowise · error · Error

${e}

Error message

${e}

What it means

Thrown in Chroma vectorStoreMethods as the catch-all around Chroma.fromDocuments and record-manager indexing. Covers connection, auth, collection, and document-insertion failures. Uses `throw new Error(e)`, coercing the underlying error to a string and losing its stack/type.

Source

Thrown at packages/components/nodes/vectorstores/Chroma/Chroma.ts:147

                    const vectorStore = await Chroma.fromExistingCollection(embeddings, obj)
                    await recordManager.createSchema()
                    const res = await index({
                        docsSource: finalDocs,
                        recordManager,
                        vectorStore,
                        options: {
                            cleanup: recordManager?.cleanup,
                            sourceIdKey: recordManager?.sourceIdKey ?? 'source',
                            vectorStoreName: collectionName
                        }
                    })
                    return res
                } else {
                    await Chroma.fromDocuments(finalDocs, embeddings, obj)
                    return { numAdded: finalDocs.length, addedDocs: finalDocs }
                }
            } catch (e) {
                throw new Error(e)
            }
        },
        async delete(nodeData: INodeData, ids: string[], options: ICommonObject): Promise<void> {
            const collectionName = nodeData.inputs?.collectionName as string
            const embeddings = nodeData.inputs?.embeddings as Embeddings
            const chromaURL = nodeData.inputs?.chromaURL as string
            const recordManager = nodeData.inputs?.recordManager

            const credentialData = await getCredentialData(nodeData.credential ?? '', options)
            const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData)
            const chromaTenant = getCredentialParam('chromaTenant', credentialData, nodeData)
            const chromaDatabase = getCredentialParam('chromaDatabase', credentialData, nodeData)

            const obj = _buildChromaConfig(collectionName, chromaURL, chromaApiKey, chromaTenant, chromaDatabase)

            try {
                if (recordManager) {
                    const vectorStoreName = collectionName

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Confirm Chroma is reachable: `curl <chromaURL>/api/v1/heartbeat`.
  2. Verify chromaApiKey, chromaTenant, chromaDatabase match the Chroma server's auth config.
  3. Ensure the collection exists and its embedding dimension matches the embeddings model.
  4. For record-manager mode, confirm the record manager datastore is configured and reachable.
  5. Retry on transient network failures.

Example fix

// before
chromaURL = 'http://localhost:8000' // wrong port -> connection refused, wrapped here

// after
chromaURL = 'http://localhost:8000' // confirm reachable: curl http://localhost:8000/api/v1/heartbeat
Defensive patterns

Strategy: try-catch

Validate before calling

async function preflightChroma(url: string, creds: any) {
  if (!/^https?:\/\//.test(url)) throw new Error('chromaURL must be a full http(s) URL')
  const res = await fetch(`${url.replace(/\/$/, '')}/api/v1/heartbeat`).catch(() => null)
  if (!res || !res.ok) throw new Error(`Chroma unreachable at ${url} — start the server or fix the URL`)
  if (creds?.chromaApiKey === undefined && process.env.CHROMA_API_KEY) {
    throw new Error('Chroma server has auth enabled but chromaApiKey credential is not set')
  }
}

Type guard

const hasChromaEndpoint = (v: unknown): v is string =>
  typeof v === 'string' && /^https?:\/\/.+/.test(v)

Try / catch

try { return await chromaNode.vectorStoreMethods.upsert(nodeData, options) }
catch (e) {
  const msg = (e as Error).message
  if (/econnrefused|enotfound|fetch failed/i.test(msg)) throw new Error('Chroma server unreachable — check chromaURL')
  if (/unauthor|401|api key/i.test(msg)) throw new Error('Chroma auth failed — check chromaApiKey/tenant/database')
  if (/dimension|embedding/i.test(msg)) throw new Error('Collection embedding dimension mismatch')
  throw e
}

Prevention

When it happens

Trigger: Chroma server unreachable (wrong chromaURL); chromaApiKey mismatch when auth is enabled; collection does not exist or dimension mismatch; embeddings dimension differs from the collection's; recordManager misconfigured; network failure.

Common situations: Self-hosted Chroma not running; chromaURL points to wrong host/port; Chroma auth enabled but key wrong or tenant/database mismatch; collection created with a different embedding dimension; Chroma version incompatibility.

Related errors


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