fetch-with-file-support v2.0.1
fetch() with file: support
š fetch() but with support for file:///my/file.txt URLs
// Native Node.js fetch
const response = await fetch(import.meta.resolve("./data.txt"));
const text = await response.text();
console.log(text);
// š TypeError: fetch failed
// cause: Error: not implemented... yet...// Using fetch-with-file-support in Node.js
import { fetch } from "fetch-with-file-support";
const response = await fetch(import.meta.resolve("./data.txt"));
const text = await response.text();
console.log(text);
// 'Hello from data.txt!'š Works great for writing isomorphic fetch(import.meta.resolve()) code \
š Uses fs.createReadStream() for streaming reads \
š¦ Mirrors Deno's implementation of fetch() for file: URLs
Installation
You can install this package using your favorite npm package manager like npm, Yarn, pnpm, or Bun.
npm install fetch-with-file-supportā¹ Deno already supports fetch()-ing file: URLs. This package will delegate
to the native fetch() implementation.
š In browsers this will delegate to the global fetch() function. Some
browsers support fetch()-ing file: URLs while others do not. Some support
file: URLs only under special circumstances.
Usage
The quickest way to get started is to import the fetch() function straight
from the module:
import { fetch } from "fetch-with-file-support";
const response = await fetch(import.meta.resolve("./package.json"));
const json = await response.json();This is very useful when writing code that imports configuration, data, or other
information from a file located right next to the .js source file. WASM is a
good example.
import { fetch } from "fetch-with-file-support";
// Normally 'fetch("file:///mypkg/app_bg.wasm")' would fail in Node.js!
const { module, instance } = await WebAssembly.instantiateStreaming(
fetch(import.meta.resolve("./app_bg.wasm")),
imports,
);š If you prefer global polyfills, you can import
fetch-with-file-support/auto.
import "fetch-with-file-support/auto";
const response = await fetch(import.meta.resolve("./data.json"));
const json = await response.json();Development