fetch-with-file-support
v2.0.1
Published
๐ fetch() but with support for file:///my/file.txt URLs
Maintainers
Readme
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
