fs-remote v0.1.9
fs-remote
fs-remote is a drop-in replacement for Node.js's fs module, designed for web browsers. It delegates all fs calls to a node server. tl;dr it lets you use a real fs module in the browser.
Usage
- In node, create and run an
fs-remoteserver:
const createServer = require("fs-remote/createServer");
// createServer returns a net.Server
const server = createServer();
server.listen(3000, () => {
console.log("fs-remote server is listening on port 3000");
});In the browser, load
fs-remote'screateClientfunction:- If you are using
webpackorbrowserify, you can userequire:
const createClient = require("fs-remote/createClient");- Otherwise, you can use a script tag and find
createClienton the globalfsRemotevaraible:
<script src="https://unpkg.com/fs-remote@0.1.9/dist/umd.js"></script>const createClient = fsRemote.createClient;- If you are using
In the browser, use
createClientto create anfsobject pointing to yourfs-remoteserver:
// Pass in the URL to the server you created
const fs = createClient("http://localhost:3000");- Use the
fsobject normally:
console.log(fs.readFileSync("./package.json"));How it works
All the methods on the fs object returned by createClient use XHRs and/or WebSockets to communicate with the server and run the fs code matching what you ran on the client on the server. Synchronous XHRs are used when necessary to make synchronous fs operations work.
Supported APIs
fs.accessfs.accessSyncfs.appendFilefs.appendFileSyncfs.chmodfs.chmodSyncfs.chownfs.chownSyncfs.closefs.closeSyncfs.constantsfs.copyFilefs.copyFileSyncfs.createReadStreamfs.createWriteStreamfs.existsfs.existsSyncfs.fchmodfs.fchmodSyncfs.fchownfs.fchownSyncfs.fdatasyncfs.fdatasyncSyncfs.fstatfs.fstatSyncfs.fsyncfs.fsyncSyncfs.ftruncatefs.ftruncateSyncfs.futimesfs.futimesSyncfs.lchmodfs.lchmodSyncfs.lchownfs.lchownSyncfs.linkfs.linkSyncfs.lstatfs.lstatSyncfs.mkdirfs.mkdirSyncfs.mkdtempfs.mkdtempSyncfs.openfs.openSyncfs.readfs.readFilefs.readFileSyncfs.readSyncfs.readdirfs.readdirSyncfs.readlinkfs.readlinkSyncfs.realpathfs.realpathSyncfs.renamefs.renameSyncfs.rmdirfs.rmdirSyncfs.statfs.statSyncfs.symlinkfs.symlinkSyncfs.truncatefs.truncateSyncfs.unlinkfs.unlinkSyncfs.unwatchFilefs.utimesfs.utimesSyncfs.watchfs.watchFilefs.writefs.writeFilefs.writeFileSyncfs.writeSyncfs.FSWatcherfs.Stats
Notes
The server supports CORS (Cross-Origin Resource Sharing) by default. To disable CORS, pass { cors: false } when constructing the server:
const createServer = require("fs-remote/createServer");
// createServer returns a net.Server
const server = createServer({ cors: false });Examples
Check the examples folder for examples.
License
MIT