You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fs.readFile does not account file system flag 'a+' in Node 14.11 #35290
I tried to find similar issues but couldn't, sorry if it is already reported.
Version:
v14.11.0
Platform:
Darwin MacBook-Pro-Daniil.local 18.7.0 Darwin Kernel Version 18.7.0: Thu Jun 20 18:42:21 PDT 2019; root:xnu-4903.270.47~4/RELEASE_X86_64 x86_64
What steps will reproduce the bug?
With a+ flag file should be created if it does not exist. It works with readFileSync, but fails with readFile
There is also similar problem with w+ flag and maybe others, but I did not tested all of them.
constfs=require('fs');constcontent=fs.readFileSync('./nonexistingfile1',{encoding: 'utf-8',flag: 'a+',});console.log(content);// content is empty string, so file was createdfs.readFile('./nonexistingfile2',{encoding: 'utf-8',flag: 'a+'},(err,data)=>{console.log(err,data);// [Error: ENOENT: no such file or directory, open './nonexistingfile2'] {// errno: -2,// code: 'ENOENT',// syscall: 'open',// path: './nonexistingfile2'// }});
How often does it reproduce? Is there a required condition?
Always with node v14.11
Works fine in node v12.18.4
What is the expected behavior?
File is created before reading and there is no ENOENT error
What do you see instead?
ENOENT error
[Error: ENOENT: no such file or directory, open './nonexistingfile2'] {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: './nonexistingfile2'
}
This issue made me realize that we have a big inconsistency regarding this option: all methods expect it to be flag in the options object, except the stream ones (createReadStream, createWriteStream), which look for the flags property...
changed the title [-]fs.readFile not account for file system flag 'a+' in Node 14.11[/-][+]fs.readFile does not account file system flag 'a+' in Node 14.11[/+]on Sep 22, 2020
Activity
O4epegb commentedon Sep 22, 2020
I am not sure, since I'm new to Node source codebase, but it might be connected to this PR https://github.com/nodejs/node/pull/27044/files#diff-9a205ef7ee967ee32efee02e58b3482dL314
Possible typo since there is no such thing as
options.flagsonlyoptions.flag.I have no idea how to test it yet, but I can make PR if this is the problem
BridgeAR commentedon Sep 22, 2020
@O4epegb a PR would be great. This seems to be a typo.
O4epegb commentedon Sep 22, 2020
Ok, I'll make it soon!
targos commentedon Sep 22, 2020
This issue made me realize that we have a big inconsistency regarding this option: all methods expect it to be
flagin the options object, except the stream ones (createReadStream, createWriteStream), which look for theflagsproperty...[-]fs.readFile not account for file system flag 'a+' in Node 14.11[/-][+]fs.readFile does not account file system flag 'a+' in Node 14.11[/+]O4epegb commentedon Oct 19, 2020
I guess this issue could be closed now?
Fixed here: #35292