-
-
Notifications
You must be signed in to change notification settings - Fork 139
Open
Description
With this code:
import fs, { readFile, readFileSync } from "node:fs";
import fsPromises, { readFile as readFilePromise } from "node:fs/promises";
import { vol } from "memfs";
import { patchFs } from "fs-monkey";
vol.fromJSON({ "foo": "bar" });
patchFs(vol);
const test = (fn) => {
fn((err, data) => {
if (err) {
console.log(fn.toString().slice(8), "ERR");
} else {
console.log(fn.toString().slice(8), "OK");
}
});
};
const testSync = (fn) => {
try {
const data = fn();
console.log(fn.toString().slice(6), "OK");
} catch (err) {
console.log(fn.toString().slice(6), "ERR");
}
};
const testAsync = async (fn) => {
try {
const data = await fn();
console.log(fn.toString().slice(6), "OK");
} catch (err) {
console.log(fn.toString().slice(6), "ERR");
}
};
test((cb) => fs.readFile("foo", "utf8", cb));
test((cb) => fs.readFile("foo", cb));
test((cb) => readFile("foo", "utf8", cb));
test((cb) => readFile("foo", cb));
testSync(() => fs.readFileSync("foo", "utf8"));
testSync(() => fs.readFileSync("foo"));
testSync(() => readFileSync("foo", "utf8"));
testSync(() => readFileSync("foo"));
await testAsync(() => fs.promises.readFile("foo", "utf8"));
await testAsync(() => fs.promises.readFile("foo"));
await testAsync(() => fsPromises.readFile("foo", "utf8"));
await testAsync(() => fsPromises.readFile("foo"));
await testAsync(() => readFilePromise("foo", "utf8"));
await testAsync(() => readFilePromise("foo"));Only fs.readFile() and fs.readFileSync() work.
| Function | Result |
|---|---|
fs.readFile("foo", "utf8", cb) |
✅ |
fs.readFile("foo", cb) |
✅ |
readFile("foo", "utf8", cb) |
❌ |
readFile("foo", cb) |
❌ |
fs.readFileSync("foo", "utf8") |
✅ |
fs.readFileSync("foo") |
✅ |
readFileSync("foo", "utf8") |
❌ |
readFileSync("foo") |
❌ |
fs.promises.readFile("foo", "utf8") |
❌ |
fs.promises.readFile("foo") |
❌ |
fsPromises.readFile("foo", "utf8") |
❌ |
fsPromises.readFile("foo") |
❌ |
readFilePromise("foo", "utf8") |
❌ |
readFilePromise("foo") |
❌ |
I tested with and without "utf8" because the behavior can be different: nodejs/node#48658
mfukala, azjgard, Loccko and janbiasi
Metadata
Metadata
Assignees
Labels
No labels