diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 9e18324..7e367c7 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -4,6 +4,7 @@ - [Quickstart](./quickstart.md) - [Prerequisites](./prerequisites/index.md) - [npm (optional)](./prerequisites/npm.md) + - [considerations](./prerequisites/considerations.md) - [Non-`rustup` setups](./prerequisites/non-rustup-setups.md) - [Commands](./commands/index.md) - [`new`](./commands/new.md) diff --git a/docs/src/prerequisites/considerations.md b/docs/src/prerequisites/considerations.md new file mode 100644 index 0000000..b4bd082 --- /dev/null +++ b/docs/src/prerequisites/considerations.md @@ -0,0 +1,38 @@ +# 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: + +```js +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 +``` + +## Workarround +Import or declare fetch and objects: Headers, Request, Response + +```ts +// 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; +``` + +[fetch]: https://github.com/node-fetch/node-fetch +