Skip to content

unable to use httpfs extension in node #1992

Open
@declann

Description

@declann

What happens?

I got the bare-node example working as described here

But with duckdb-wasm 1.28, 1.29.0, and 1.29 dev I can't get the httpfs extension working in node.

Ideally a query like this:

await conn.query(`select * from 'https://blobs.duckdb.org/data/taxi_2019_04.parquet' limit 1;`);

Would just work, as it does in the browser.

But working from bare-node it gives an error Error: IO Error: No files found that match the pattern "select * from 'https://blobs.duckdb.org/data/taxi_2019_04.parquet' limit 1;"

I tried adding INSTALL httpfs and LOAD httpfs and also LOAD '[path to local url with a download of https://extensions.duckdb.org/v1.2.1/wasm_eh/httpfs.duckdb_extension.wasm]' and could not get anything to work. Also tried multiple node versions.

To Reproduce

npm init -y
npm i --save @duckdb/duckdb-wasm web-worker

copy to index.cjs: (same as bare-node example in repo with only one new line, marked with NEW LINE. Note: here this only works because of npm i commands above (web-worker missing in example package.json))

const duckdb = require('@duckdb/duckdb-wasm');
const path = require('path');
const Worker = require('web-worker');
const DUCKDB_DIST = path.dirname(require.resolve('@duckdb/duckdb-wasm'));

(async () => {
    try {
        const DUCKDB_CONFIG = await duckdb.selectBundle({
            mvp: {
                mainModule: path.resolve(DUCKDB_DIST, './duckdb-mvp.wasm'),
                mainWorker: path.resolve(DUCKDB_DIST, './duckdb-node-mvp.worker.cjs'),
            },
            eh: {
                mainModule: path.resolve(DUCKDB_DIST, './duckdb-eh.wasm'),
                mainWorker: path.resolve(DUCKDB_DIST, './duckdb-node-eh.worker.cjs'),
            },
        });

        const logger = new duckdb.ConsoleLogger();
        const worker = new Worker(DUCKDB_CONFIG.mainWorker);
        const db = new duckdb.AsyncDuckDB(logger, worker);
        await db.instantiate(DUCKDB_CONFIG.mainModule, DUCKDB_CONFIG.pthreadWorker);

        const conn = await db.connect();
        await conn.query(`SELECT count(*)::INTEGER as v FROM generate_series(0, 100) t(v)`);
        await conn.query(`select * from 'https://blobs.duckdb.org/data/taxi_2019_04.parquet' limit 1;`); // NEW LINE

        await conn.close();
        await db.terminate();
        await worker.terminate();
    } catch (e) {
        console.error(e);
    }
})();

Browser/Environment:

node v22.12.0

Device:

ubuntu

DuckDB-Wasm Version:

1.29.0 but also others

DuckDB-Wasm Deployment:

from @duckdb/duckdb-wasm on npm

Full Name:

Declan Naughton

Affiliation:

DCN Consulting

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions