Skip to content

fs.existSync returns true after fs. symlinkSync node 10 onwards in windows only #30538

Closed
@SparshithNR

Description

@SparshithNR

Hi,
I started seeing a difference in behavior when I run the following code in Linux and Windows in node 10 and node 12.

const fs = require('fs');

console.log(`Before symlink: ${fs.existsSync('linkHere')}`);
fs.symlinkSync('test/foo.js', 'linkHere');
console.log(`After symlink: ${fs.existsSync('linkHere')}`);
console.log(`issymlink: ${fs.lstatSync('linkHere').isSymbolicLink()}`);
//cleanup
fs.unlinkSync('linkHere');

I created reproduction repo and travis, appveyor CI to show the difference.
Please check the output of the above snippet;

  • node 8
    • linux
$ node --version
v8.16.2
> node index.js
Before symlink: false
After symlink: false
issymlink: true
  • windows
$ node index.js
Before symlink: false
After symlink: false
issymlink: true
  • node 10
    • linux
$ node --version
v10.17.0
> node index.js
Before symlink: false
After symlink: false
issymlink: true
  • windows
Installing node 10.17.0 (x86)...
$ node index.js
Before symlink: false
After symlink: true
issymlink: true

I am not sure why are we getting different result for same code in windows and Linux? Is it a bug or am I missing something.
Reproduction repo: https://github.com/SparshithNR/node-symlink
Travis build: https://travis-ci.com/SparshithNR/node-symlink/builds/137133722
appveyor build: https://ci.appveyor.com/project/SparshithNR/node-symlink

Thank you in advance :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    fsIssues and PRs related to the fs subsystem / file system.windowsIssues and PRs related to the Windows platform.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions