-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Description
Version: Deno 2.3.7
Followed up from #23656
cc @bartlomieju
Setup:
deno init
...
deno add npm:@duckdb/duckdb-wasm
-> Add npm:@duckdb/duckdb-wasm@1.29.1-dev132.0
main.ts
import duckdb from '@duckdb/duckdb-wasm';
async function setupDB() {
const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES);
// Instantiate the asynchronus version of DuckDB-Wasm
const worker = new Worker(bundle.mainWorker!, { type: "module" });
const logger = new duckdb.ConsoleLogger();
const db = new duckdb.AsyncDuckDB(logger, worker);
await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
const con = await db.connect()
return con
}
const con = await setupDB();
const res = await con.query(`
SELECT * FROM generate_series(1, 100) t(v)
`);
console.log(res)
Running this (deno run main.ts
) results in:
error: Uncaught (in worker "") (in promise) ReferenceError: global is not defined
error: Uncaught (in worker "") (in promise) ReferenceError: global is not defined
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:515362
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:524182
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:634
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:748915
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:765065
info: global is not available in the global scope in Deno.
hint: Use globalThis instead, or assign globalThis.global \= globalThis,
or run again with \--unstable\-node\-globals flag to add this global.
ErrorEvent {
bubbles: false,
cancelable: true,
composed: false,
currentTarget: Worker { onerror: null, onmessage: null, onmessageerror: null },
defaultPrevented: false,
eventPhase: 2,
srcElement: null,
target: Worker { onerror: null, onmessage: null, onmessageerror: null },
returnValue: true,
timeStamp: 0,
type: "error",
message: "Uncaught (in promise) ReferenceError: global is not defined",
filename: "https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js",
lineno: 1,
colno: 515362,
error: null
}
error in duckdb worker: Uncaught (in promise) ReferenceError: global is not defined
error: Uncaught (in promise) Error: Unhandled error in child worker.
at Worker.#pollControl (ext:runtime/11_workers.js:204:19)
at eventLoopTick (ext:core/01_core.js:178:7)
Running this with --unstable-node-globals
:
error: Uncaught (in worker "") (in promise) TypeError: Cannot read properties of undefined (reading 'from')
error: Uncaught (in worker "") (in promise) TypeError: Cannot read properties of undefined (reading 'from')
at b (https://cdn.jsdelivr.net/npm/@duckdb/duckdb\-wasm@1.29.1\-dev132.0/dist/duckdb\-browser\-eh.worker.js:1:516993)
at h (https://cdn.jsdelivr.net/npm/@duckdb/duckdb\-wasm@1.29.1\-dev132.0/dist/duckdb\-browser\-eh.worker.js:1:516770)
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:524028
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:524182
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:634
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:748915
at https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js:1:765065
ErrorEvent {
bubbles: false,
cancelable: true,
composed: false,
currentTarget: Worker { onerror: null, onmessage: null, onmessageerror: null },
defaultPrevented: false,
eventPhase: 2,
srcElement: null,
target: Worker { onerror: null, onmessage: null, onmessageerror: null },
returnValue: true,
timeStamp: 0,
type: "error",
message: "Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'from')",
filename: "https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.1-dev132.0/dist/duckdb-browser-eh.worker.js",
lineno: 1,
colno: 516993,
error: null
}
error in duckdb worker: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'from')
error: Uncaught (in promise) Error: Unhandled error in child worker.
at Worker.#pollControl (ext:runtime/11_workers.js:204:19)
at eventLoopTick (ext:core/01_core.js:178:7)
This is because it is trying to read Buffer.from
, and Buffer
is undefined. This can be seen through the un-minified version in the source map.
Where the error occurs (in the minified file):
b=function(S,T){var E=Uc(),w=Oc().Buffer,P=T?"sha224":"sha256",L;w.from&&!t.JS_SHA256_NO_BUFFER_FROM?L=w.from:L=function(D){return new w(D)};var M=function(D){if(typeof D=="string")return E.createHash(P).update(D,"utf8").digest("hex");if(D==null)throw new Error(o);return D.constructor===ArrayBuffer&&(D=new Uint8Array(D))
^
This corresponds to this in the expanded source:
Using recover-source I found that this comes from
js-sha256/src/sha256.js
line 87.