Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 1.71 KB

README.md

File metadata and controls

86 lines (54 loc) · 1.71 KB

Use Expr to send HTTP(s) requests from inside WASM

Instructions for this devcontainer

Tested with Go 1.24.0, Bun 1.2.2, Deno 2.1.10, Expr v1.16.9.

Preparation

  1. Open this repo in devcontainer, e.g. using Github Codespaces. Type or copy/paste following commands to devcontainer's terminal.

  2. Install Deno (also used as static HTTP server, as Ubuntu Noble has no Python installed by default):

curl -fsSL https://deno.land/install.sh | bash -s -- --yes

Building

  1. cd into the folder of this example:
cd browser-and-deno
  1. Install expr:
go get github.com/expr-lang/expr
  1. Compile the example:
GOOS=js GOARCH=wasm go build -o main.wasm main.go
  1. Copy the glue JS from Golang distribution to example's folder (note using /lib/wasm/ because Go 1.24):
cp $(go env GOROOT)/lib/wasm/wasm_exec.js ./

Test with browser

  1. Run simple HTTP server to temporarily publish project to Web:
~/.deno/bin/deno run --allow-net --allow-read jsr:@std/http/file-server

Codespace will show you "Open in Browser" button. Just click that button or obtain web address from "Forwarded Ports" tab.

  1. As index.html and a 14.7M-sized main.wasm are loaded into browser, refer to browser developer console to see the results.

Test with Node.js

Impossible yet due to golang/go#59605.

Test with Bun

  1. Install Bun:
curl -fsSL https://bun.sh/install | bash
  1. Run with Bun:
~/.bun/bin/bun bun.js

Test with Deno

  1. Run with Deno:
~/.deno/bin/deno run --allow-read --allow-net deno.js

Finish

Perform your own experiments if desired.