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.
- In node, create and run an
fs-remote
server:
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
'screateClient
function:- If you are using
webpack
orbrowserify
, you can userequire
:
const createClient = require("fs-remote/createClient");
- Otherwise, you can use a script tag and find
createClient
on the globalfsRemote
variable:
<script src="https://unpkg.com/[email protected]/dist/umd.js"></script>
const createClient = fsRemote.createClient;
- If you are using
-
In the browser, use
createClient
to create anfs
object pointing to yourfs-remote
server:
// Pass in the URL to the server you created
const fs = createClient("http://localhost:3000");
- Use the
fs
object normally:
console.log(fs.readFileSync("./package.json"));
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.
fs.access
fs.accessSync
fs.appendFile
fs.appendFileSync
fs.chmod
fs.chmodSync
fs.chown
fs.chownSync
fs.close
fs.closeSync
fs.constants
fs.copyFile
fs.copyFileSync
fs.createReadStream
fs.createWriteStream
fs.exists
fs.existsSync
fs.fchmod
fs.fchmodSync
fs.fchown
fs.fchownSync
fs.fdatasync
fs.fdatasyncSync
fs.fstat
fs.fstatSync
fs.fsync
fs.fsyncSync
fs.ftruncate
fs.ftruncateSync
fs.futimes
fs.futimesSync
fs.lchmod
fs.lchmodSync
fs.lchown
fs.lchownSync
fs.link
fs.linkSync
fs.lstat
fs.lstatSync
fs.mkdir
fs.mkdirSync
fs.mkdtemp
fs.mkdtempSync
fs.open
fs.openSync
fs.read
fs.readFile
fs.readFileSync
fs.readSync
fs.readdir
fs.readdirSync
fs.readlink
fs.readlinkSync
fs.realpath
fs.realpathSync
fs.rename
fs.renameSync
fs.rmdir
fs.rmdirSync
fs.stat
fs.statSync
fs.symlink
fs.symlinkSync
fs.truncate
fs.truncateSync
fs.unlink
fs.unlinkSync
fs.unwatchFile
fs.utimes
fs.utimesSync
fs.watch
fs.watchFile
fs.write
fs.writeFile
fs.writeFileSync
fs.writeSync
fs.FSWatcher
fs.Stats
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 });
Check the examples
folder for examples.
MIT