Repository navigation
rmdirsync doesn't throw error when symlinked path is passed as argument in windows node 12 #31231
Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
Labels
fsIssues and PRs related to file-system APIs and the fs module.Issues and PRs related to file-system APIs and the fs module.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
Description
I have written a simple code to pin down the issue.
Env: Windows
Node version: 12
const fs = require('fs');
fs.mkdirSync("tmp");
fs.symlinkSync(".", "tmp/out");
console.log(`fs.existSync(tmp/out) : ${fs.existsSync('tmp/out')}`);
fs.rmdirSync('tmp/out');Execution in CI:
Node 12
Build started
git clone -q --branch=rmdirsync https://github.com/SparshithNR/node-symlink.git C:\projects\node-symlink
git checkout -qf a6cb35fc2b3d2df328d4aeae3db65d732243142c
Restoring build cache
Cache 'C:\Users\appveyor\AppData\Local\Yarn' - Restored
Running Install scripts
Install-Product node $env:nodejs_version
Uninstalling node 8.16.2 (x86)...
Installing node 12.13.1 (x86)...
git rev-parse HEAD
a6cb35fc2b3d2df328d4aeae3db65d732243142c
yarn run test
yarn run v1.16.0
$ node index.js
fs.existSync(tmp/out) : true
Done in 0.27s.
Updating build cache...
Cache 'C:\Users\appveyor\AppData\Local\Yarn' - Up to date
Build successNode 10:
Build started
git clone -q --branch=rmdirsync https://github.com/SparshithNR/node-symlink.git C:\projects\node-symlink
git checkout -qf a6cb35fc2b3d2df328d4aeae3db65d732243142c
Restoring build cache
Cache 'C:\Users\appveyor\AppData\Local\Yarn' - Restored
Running Install scripts
Install-Product node $env:nodejs_version
Uninstalling node 8.16.2 (x86)...
Installing node 10.17.0 (x86)...
git rev-parse HEAD
a6cb35fc2b3d2df328d4aeae3db65d732243142c
yarn run test
yarn run v1.16.0
$ node index.js
fs.existSync(tmp/out) : true
fs.js:114
throw err;
^
Error: ENOENT: no such file or directory, rmdir 'tmp/out'
at Object.rmdirSync (fs.js:684:3)
at Object.<anonymous> (C:\projects\node-symlink\index.js:6:4)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Command exited with code 1Code can be found here: https://github.com/SparshithNR/node-symlink/tree/rmdirsync
Windows Execution: https://ci.appveyor.com/project/SparshithNR/node-symlink/builds/29933274
Linux Execution: https://github.com/SparshithNR/node-symlink/runs/376483962
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
fsIssues and PRs related to file-system APIs and the fs module.Issues and PRs related to file-system APIs and the fs module.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
Activity
Hakerh400 commentedon Jan 7, 2020
I think the bahavior in Node.js v12.x is correct. It should not throw an error. The error you see in v10.x was a bug (or a feature), which was fixed in #23724. Function
fs.symlinkSyncrequired third parameter, which can be either'file'or'dir'(default was'file'), sofs.rmdirSyncfails because the symlink points to an inaccessible file.SparshithNR commentedon Jan 7, 2020
@Hakerh400
fs.rmdirSyncis failing in node 10 not in node 12. So is it expected not to do anything and silently return in node 12?SparshithNR commentedon Jan 7, 2020
One more question is why the behavior is different in the different platforms?
Linux: Throws error
Mac: Throws Error
Windows: Doesn't throw an error.
Please have look at the below terminal output from Linux CI.
https://travis-ci.com/SparshithNR/node-symlink/jobs/272882479
fs.rmdirSyncthrowing error in node 12 Linux and not in node 12 windows forces us to code with a branching.github-actions commentedon Jun 27, 2026
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
github-actions commentedon Jul 28, 2026
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.