duckdb-wasm
duckdb-wasm copied to clipboard
Can't build duckdb-wasm from source
What happens?
The instructions on the README.md are not working.
-- Build files have been written to: duckdb-wasm/build/relsize/eh
+ emmake make -Cduckdb-wasm/build/relsize/eh -j12 duckdb_wasm
make: make -Cduckdb-wasm/build/relsize/eh -j12 duckdb_wasm
make[1]: *** No rule to make target `duckdb_wasm'. Stop.
The build_loadable: recipe has GEN=ninja, this results in creating a build.ninja file in these folders, not a Makefile
I've fixed this by commenting out export GEN=ninja from my ~/.zshrc and also removing the GEN=ninja from the build_loadable recipe
That results in reaching the next error:
duckdb-wasm/lib/src/config.cc:66:37: error: no matching member function for call to 'Parse'
66 | rapidjson::ParseResult ok = doc.Parse(args_json.begin(), args_json.size());
| ~~~~^~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2744:22: note: candidate function not viable: no known conversion from 'const_iterator' (aka '__wrap_iter<const char *>') to 'const Ch *' (aka 'const char *') for 1st argument
2744 | GenericDocument& Parse(const Ch* str, size_t length) {
| ^ ~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2731:22: note: candidate template ignored: couldn't infer template argument 'parseFlags'
2731 | GenericDocument& Parse(const typename SourceEncoding::Ch* str, size_t length) {
| ^
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2740:22: note: candidate template ignored: couldn't infer template argument 'parseFlags'
2740 | GenericDocument& Parse(const Ch* str, size_t length) {
| ^
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2708:22: note: candidate function template not viable: requires single argument 'str', but 2 arguments were provided
2708 | GenericDocument& Parse(const typename SourceEncoding::Ch* str) {
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2719:22: note: candidate function template not viable: requires single argument 'str', but 2 arguments were provided
2719 | GenericDocument& Parse(const Ch* str) {
| ^ ~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2726:22: note: candidate function not viable: requires single argument 'str', but 2 arguments were provided
2726 | GenericDocument& Parse(const Ch* str) {
| ^ ~~~~~~~~~~~~~
1 error generated.
make[4]: *** [CMakeFiles/duckdb_web.dir/src/config.cc.o] Error 1
make[4]: *** Waiting for unfinished jobs....
duckdb-wasm/lib/src/json_parser.cc:901:18: error: no matching member function for call to 'Parse'
901 | json_doc.Parse<rapidjson::kParseNanAndInfFlag>(json.begin(), json.size());
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2740:22: note: candidate function template not viable: no known conversion from 'const_iterator' (aka '__wrap_iter<const char *>') to 'const Ch *' (aka 'const char *') for 1st argument
2740 | GenericDocument& Parse(const Ch* str, size_t length) {
| ^ ~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2731:22: note: candidate template ignored: couldn't infer template argument 'SourceEncoding'
2731 | GenericDocument& Parse(const typename SourceEncoding::Ch* str, size_t length) {
| ^
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2708:22: note: candidate function template not viable: requires single argument 'str', but 2 arguments were provided
2708 | GenericDocument& Parse(const typename SourceEncoding::Ch* str) {
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
duckdb-wasm/build/relsize/eh/third_party/rapidjson/install/include/rapidjson/document.h:2719:22: note: candidate function template not viable: requires single argument 'str', but 2 arguments were provided
2719 | GenericDocument& Parse(const Ch* str) {
| ^ ~~~~~~~~~~~~~
1 error generated.
make[4]: *** [CMakeFiles/duckdb_web.dir/src/json_parser.cc.o] Error 1
make[3]: *** [CMakeFiles/duckdb_web.dir/all] Error 2
make[2]: *** [CMakeFiles/duckdb_wasm.dir/rule] Error 2
make[1]: *** [duckdb_wasm] Error 2
emmake: error: 'make -Cduckdb-wasm/build/relsize/eh -j12 duckdb_wasm' failed (returned 2)
make: *** [build_loadable] Error 1
These two issues (GEN=ninja breaking and the Parse method not accepting the iterator returned from .begin()) are fixed by #2024
Summary of remaining issues:
make apply_patches+make serveare not sufficient to build successfullyemsdkversion should be locked to3.1.69-3.1.71- Install instructions for
emsdkare missing:
git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
~/emsdk install 3.1.69
~/emsdk activate 3.1.69
echo 'source "~/emsdk/emsdk_env.sh"' >> $HOME/.bash_profile
- Install instructions for
yarnare missing:sudo npm install -g yarn - Install instructions for
js-beautifyare missing:sudo apt install node-js-beautify(on ubuntu)
Next issue: https://github.com/duckdb/duckdb-wasm/pull/2016#issuecomment-2888968820
Next issue:
yarn
yarn install v1.22.22
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.14s.
yarn install
yarn install v1.22.22
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.15s.
yarn workspace @duckdb/duckdb-wasm-shell install:wasmpack
yarn workspace v1.22.22
yarn run v1.22.22
$ node ../../node_modules/wasm-pack/install.js
wasm-pack is already installed, skipping installation.
✨ Done in 0.22s.
✨ Done in 0.35s.
mkdir -p build
touch build/bootstrap
yarn workspace @duckdb/duckdb-wasm build:debug
yarn workspace v1.22.22
yarn run v1.22.22
$ node bundle.mjs debug && tsc --emitDeclarationOnly
DEBUG=true
[ ESBUILD ] Patch bindings
sed: ./src/bindings/duckdb-mvp.js: No such file or directory
node:internal/errors:983
const err = new Error(message);
^
Error: Command failed: sed -i.bak 's/require(["'\'']child_process["'\''])/["child_process"].map(require)/g' ./src/bindings/duckdb-mvp.js && rm ./src/bindings/duckdb-mvp.js.bak
sed: ./src/bindings/duckdb-mvp.js: No such file or directory
at genericNodeError (node:internal/errors:983:15)
at wrappedFn (node:internal/errors:537:14)
at checkExecSyncError (node:child_process:882:11)
at execSync (node:child_process:954:15)
at patchFile (file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:369:5)
at file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:104:5
at file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:359:3
at ModuleJob.run (node:internal/modules/esm/module_job:274:25)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:98:5) {
status: 1,
signal: null,
output: [
null,
Buffer(0) [Uint8Array] [],
Buffer(61) [Uint8Array] [
115, 101, 100, 58, 32, 46, 47, 115, 114, 99,
47, 98, 105, 110, 100, 105, 110, 103, 115, 47,
100, 117, 99, 107, 100, 98, 45, 109, 118, 112,
46, 106, 115, 58, 32, 78, 111, 32, 115, 117,
99, 104, 32, 102, 105, 108, 101, 32, 111, 114,
32, 100, 105, 114, 101, 99, 116, 111, 114, 121,
10
]
],
pid: 63072,
stdout: Buffer(0) [Uint8Array] [],
stderr: Buffer(61) [Uint8Array] [
115, 101, 100, 58, 32, 46, 47, 115, 114, 99,
47, 98, 105, 110, 100, 105, 110, 103, 115, 47,
100, 117, 99, 107, 100, 98, 45, 109, 118, 112,
46, 106, 115, 58, 32, 78, 111, 32, 115, 117,
99, 104, 32, 102, 105, 108, 101, 32, 111, 114,
32, 100, 105, 114, 101, 99, 116, 111, 114, 121,
10
]
}
Node.js v23.10.0
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed.
Exit code: 1
Command: /opt/homebrew/Cellar/node/23.10.0_1/bin/node
Arguments: /opt/homebrew/Cellar/yarn/1.22.22/libexec/lib/cli.js build:debug
Directory: duckdb-wasm/packages/duckdb-wasm
Output:
What does exist in that directory is:
packages/duckdb-wasm/src/bindings/duckdb-mvp.d.ts
Not
packages/duckdb-wasm/src/bindings/duckdb-mvp.js
Contents of that file:
import { DuckDBModule } from './duckdb_module';
export function DuckDB(moduleOverrides?: Partial<DuckDBModule>): Promise<DuckDBModule>;
export default DuckDB;
EDIT:
Fix was running make wasm_dev
That creates all the bindings that the script is looking for
But that still means that:
make apply_patches
make serve
does not work.
EDIT EDIT:
DEBUG=true
[ ESBUILD ] Patch bindings
sed: ./src/bindings/duckdb-coi.pthread.js: No such file or directory
node:internal/errors:983
const err = new Error(message);
^
Error: Command failed: sed -i.bak 's/require(["'\'']vm["'\''])/["vm"].map(require)/g' ./src/bindings/duckdb-coi.pthread.js && rm ./src/bindings/duckdb-coi.pthread.js.bak
sed: ./src/bindings/duckdb-coi.pthread.js: No such file or directory
at genericNodeError (node:internal/errors:983:15)
at wrappedFn (node:internal/errors:537:14)
at checkExecSyncError (node:child_process:882:11)
at execSync (node:child_process:954:15)
at patchFile (file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:369:5)
at file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:107:5
at file://duckdb-wasm/packages/duckdb-wasm/bundle.mjs:359:3
at ModuleJob.run (node:internal/modules/esm/module_job:274:25)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:98:5) {
status: 1,
signal: null,
output: [
null,
Buffer(0) [Uint8Array] [],
Buffer(69) [Uint8Array] [
115, 101, 100, 58, 32, 46, 47, 115, 114, 99, 47,
98, 105, 110, 100, 105, 110, 103, 115, 47, 100, 117,
99, 107, 100, 98, 45, 99, 111, 105, 46, 112, 116,
104, 114, 101, 97, 100, 46, 106, 115, 58, 32, 78,
111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101,
32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111,
114, 121, 10
]
],
pid: 95954,
stdout: Buffer(0) [Uint8Array] [],
stderr: Buffer(69) [Uint8Array] [
115, 101, 100, 58, 32, 46, 47, 115, 114, 99, 47,
98, 105, 110, 100, 105, 110, 103, 115, 47, 100, 117,
99, 107, 100, 98, 45, 99, 111, 105, 46, 112, 116,
104, 114, 101, 97, 100, 46, 106, 115, 58, 32, 78,
111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101,
32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111,
114, 121, 10
]
}
Node.js v23.10.0
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed.
Exit code: 1
Command: /opt/homebrew/Cellar/node/23.10.0_1/bin/node
Arguments: /opt/homebrew/Cellar/yarn/1.22.22/libexec/lib/cli.js build:debug
Directory: duckdb-wasm/packages/duckdb-wasm
Output:
Even running make wasm_star before running make serve did not help to resolve the issue that errors on:
(async () => {
// Don't attempt to bundle NodeJS modules in the browser build.
console.log('[ ESBUILD ] Patch bindings');
patchFile('./src/bindings/duckdb-mvp.js', 'child_process');
patchFile('./src/bindings/duckdb-eh.js', 'child_process');
patchFile('./src/bindings/duckdb-coi.js', 'child_process');
patchFile('./src/bindings/duckdb-coi.pthread.js', 'vm'); // <-- this one remains missing no matter what
After commenting that out, we run into more issues:
DEBUG=true
[ ESBUILD ] Patch bindings
[ ESBUILD ] duckdb-browser.cjs
[ ESBUILD ] duckdb-browser.mjs
[ ESBUILD ] duckdb-browser-blocking.cjs
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:3785:27:
3785 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4072:27:
4072 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4084:27:
4084 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4096:27:
4096 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4240:27:
4240 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4285:27:
4285 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4297:27:
4297 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4452:27:
4452 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4607:27:
4607 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4630:27:
4630 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4719:27:
4719 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4775:27:
4775 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4820:27:
4820 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4832:27:
4832 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:4899:27:
4899 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5010:27:
5010 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5033:27:
5033 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5166:27:
5166 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5244:27:
5244 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5256:27:
5256 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5290:27:
5290 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5368:27:
5368 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5391:27:
5391 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5414:27:
5414 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5745:27:
5745 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5757:27:
5757 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:5846:27:
5846 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6089:27:
6089 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6134:27:
6134 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6146:27:
6146 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6180:27:
6180 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6214:27:
6214 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6644:27:
6644 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6656:27:
6656 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6668:27:
6668 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6691:27:
6691 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6703:27:
6703 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6715:27:
6715 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6826:27:
6826 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:6838:27:
6838 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:7213:27:
7213 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:7236:27:
7236 │ return 0n;
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:7281:27:
7281 │ return 0n;
╵ ~~
✘ [ERROR] Could not resolve "crypto"
src/bindings/duckdb-mvp.js:2567:45:
2567 │ var nodeCrypto = require("crypto");
╵ ~~~~~~~~
The package "crypto" wasn't found on the file system but is built into node. Are you trying to
bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
▲ [WARNING] This case clause will never be evaluated because it duplicates an earlier case clause [duplicate-case]
src/bindings/duckdb-eh.js:738:37:
738 │ case "getTempRet0":
╵ ~~~~~~~~~~~~~
The earlier case clause is here:
src/bindings/duckdb-eh.js:736:37:
736 │ case "getTempRet0":
╵ ~~~~~~~~~~~~~
▲ [WARNING] This case clause will never be evaluated because it duplicates an earlier case clause [duplicate-case]
src/bindings/duckdb-eh.js:740:37:
740 │ case "getTempRet0":
╵ ~~~~~~~~~~~~~
The earlier case clause is here:
src/bindings/duckdb-eh.js:736:37:
736 │ case "getTempRet0":
╵ ~~~~~~~~~~~~~
▲ [WARNING] This case clause will never be evaluated because it duplicates an earlier case clause [duplicate-case]
src/bindings/duckdb-eh.js:742:37:
742 │ case "getTempRet0": return getTempRet0; case "__table_base":
╵ ~~~~~~~~~~~~~
The earlier case clause is here:
src/bindings/duckdb-eh.js:736:37:
736 │ case "getTempRet0":
╵ ~~~~~~~~~~~~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-eh.js:5368:32:
5368 │ maxRange = (1n << 64n) - 1n
╵ ~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-eh.js:5368:38:
5368 │ maxRange = (1n << 64n) - 1n
╵ ~~~
✘ [ERROR] Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-eh.js:5368:45:
5368 │ maxRange = (1n << 64n) - 1n
╵ ~~
✘ [ERROR] Could not resolve "crypto"
src/bindings/duckdb-eh.js:1089:45:
1089 │ var nodeCrypto = require("crypto");
╵ ~~~~~~~~
The package "crypto" wasn't found on the file system but is built into node. Are you trying to
bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
duckdb-wasm/node_modules/esbuild/lib/main.js:1651
let error = new Error(text);
^
Error: Build failed with 48 errors:
src/bindings/duckdb-eh.js:1089:45: ERROR: Could not resolve "crypto"
src/bindings/duckdb-eh.js:5368:32: ERROR: Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-eh.js:5368:38: ERROR: Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-eh.js:5368:45: ERROR: Big integer literals are not available in the configured target environment ("chrome64", "edge79", "firefox62", "safari11.1")
src/bindings/duckdb-mvp.js:2567:45: ERROR: Could not resolve "crypto"
...
at failureErrorWithLog (duckdb-wasm/node_modules/esbuild/lib/main.js:1651:15)
at duckdb-wasm/node_modules/esbuild/lib/main.js:1059:25
at duckdb-wasm/node_modules/esbuild/lib/main.js:1004:52
at buildResponseToResult (duckdb-wasm/node_modules/esbuild/lib/main.js:1057:7)
at duckdb-wasm/node_modules/esbuild/lib/main.js:1086:16
at responseCallbacks.<computed> (duckdb-wasm/node_modules/esbuild/lib/main.js:704:9)
at handleIncomingPacket (duckdb-wasm/node_modules/esbuild/lib/main.js:764:9)
at Socket.readFromStdout (duckdb-wasm/node_modules/esbuild/lib/main.js:680:7)
at Socket.emit (node:events:507:28)
at addChunk (node:internal/streams/readable:559:12) {
errors: [Getter/Setter],
warnings: [Getter/Setter]
}
I've tried running this on a linux VM, which resulted in this error:
In file included from /home/tishj/duckdb-wasm/build/relsize/eh/third_party/duckdb/src/duckdb_ep-build/src/main/extension/ub_duckdb_main_extension.cpp:5:
/home/tishj/duckdb-wasm/submodules/duckdb/src/main/extension/extension_load.cpp:348:8: error: use of undeclared identifier 'var'
var jsString = ((typeof runtime == 'object') && runtime && (typeof runtime.whereToLoad == 'function') &&
^
/home/tishj/duckdb-wasm/submodules/duckdb/src/main/extension/extension_load.cpp:447:7: error: use of undeclared identifier 'var'
var url = (UTF8ToString($0));
^
EDIT:
That seemed to be fixed by locking the emscripten version to 3.1.69
needs:
wabtnpmjs-beautify(usenode-js-beautify)yarn(do not useapt-get install yarn)cargo(userustup)
I've been able to get a build working, my next step was to try to load an out-of-tree extension, this hasn't worked yet. But that's a separate issue