gleam-lang / fetch

📡 Make requests to HTTP servers with fetch
Apache License 2.0
33 stars 8 forks source link

README example leads to errors #8

Closed george-grec closed 3 months ago

george-grec commented 3 months ago

Hello, I am learning gleam and wanted to figure out how to make http calls in JS targets but the README example produces an error and I am not sure what to do. Here are my steps:

  1. $ gleam new fetch
  2. $ cd fetch
  3. $ gleam add gleam_fetch
  4. copy and paste the code example from the current README
  5. $ gleam run -t javascript

The result:

Compiled in 0.02s
    Running fetch.main
file:///Users/george/dev/gleam/fetch/build/dev/javascript/gleam_fetch/ffi.mjs:40
  let headers = new globalThis.Headers();
                ^

TypeError: globalThis.Headers is not a constructor
    at make_headers (file:///Users/george/dev/gleam/fetch/build/dev/javascript/gleam_fetch/ffi.mjs:40:17)
    at to_fetch_request (file:///Users/george/dev/gleam/fetch/build/dev/javascript/gleam_fetch/ffi.mjs:32:14)
    at Module.send (file:///Users/george/dev/gleam/fetch/build/dev/javascript/gleam_fetch/gleam/fetch.mjs:37:17)
    at main (file:///Users/george/dev/gleam/fetch/build/dev/javascript/fetch/fetch.mjs:21:12)
    at file:///Users/george/dev/gleam/fetch/build/dev/javascript/fetch/gleam.main.mjs:2:1
    at ModuleJob.run (node:internal/modules/esm/module_job:175:25)
    at async Loader.import (node:internal/modules/esm/loader:178:24)
    at async Object.loadESM (node:internal/process/esm_loader:68:5)
george-grec commented 3 months ago

The issue was caused by an outdated node installation. Upgrading from v16.1.0 to the latest version v21.7.1 fixed it. For future readers, I also recommend using https://github.com/nvm-sh/nvm to manage node versions.