duckdb / duckdb-wasm

WebAssembly version of DuckDB
https://shell.duckdb.org
MIT License
1.02k stars 110 forks source link

Cannot import .wasm in Typescript #1726

Closed stefanonardo closed 1 month ago

stefanonardo commented 2 months ago

What happens?

import duckdb_wasm from '@duckdb/duckdb-wasm/dist/duckdb-mvp.wasm'; throws Cannot find module '@duckdb/duckdb-wasm/dist/duckdb-mvp.wasm' or its corresponding type declarations..

To Reproduce

In a CRACO/Webpack app, install @duckdb/duckdb-wasm, follow the webpack paragraph here https://github.com/duckdb/duckdb-wasm/tree/main/packages/duckdb-wasm

You should be able to import @duckdb/duckdb-wasm but the .wasm files throw error.

Browser/Environment:

Typescript

Device:

macOS

DuckDB-Wasm Version:

1.28.1

DuckDB-Wasm Deployment:

browser

Full Name:

Stefano Nardo

Affiliation:

LSEG

stefanonardo commented 1 month ago

Solved by not importing the .wasm files, instead I defined MANUAL_BUNDLES in this way:

const MANUAL_BUNDLES: duckdb.DuckDBBundles = {
        mvp: {
          mainModule: new URL('@duckdb/duckdb-wasm/dist/duckdb-mvp.wasm', import.meta.url).toString(),
          mainWorker: new URL('@duckdb/duckdb-wasm/dist/duckdb-browser-mvp.worker.js', import.meta.url).toString(),
        },
        eh: {
          mainModule: new URL('@duckdb/duckdb-wasm/dist/duckdb-eh.wasm', import.meta.url).toString(),
          mainWorker: new URL('@duckdb/duckdb-wasm/dist/duckdb-browser-eh.worker.js', import.meta.url).toString(),
        },
      };