nodejs
Currently, wasm-pack
generated npm modules require us to you have fetch polyfill in your node project.
If there is a module from wasm-pack build --target nodejs
you may encounter some errors regarding global Headers
, Request
, Response
and fetch
Web APIs.
Common errors:
ReqwestError(reqwest::Error { kind: Builder, source: "JsValue(ReferenceError: Headers is not defined
ReqwestError(reqwest::Error { kind: Builder, source: "JsValue(ReferenceError: Request is not defined
var ret = getObject(arg0) instanceof Response;
ReferenceError: Response is not defined
Workaround
Import or declare fetch and objects: Headers, Request, Response
// CommonJS
const fetch = require('node-fetch');
// ES Module
import fetch from 'node-fetch';
// @ts-ignore
global.fetch = fetch;
// @ts-ignore
global.Headers = fetch.Headers;
// @ts-ignore
global.Request = fetch.Request;
// @ts-ignore
global.Response = fetch.Response;