Skip to content

EACCES when renaming folder that is being watched from nodejs #3395

Closed

Description

Microsoft Windows [Version 10.0.17134.112]

I am trying to use chokidar, a popular nodejs file system watcher library.

Whenever I use chokidar to listen for file system changes, I can no longer rename folders that lie within the folder being watched.

  • npm install chokidar
  • mkdir test
  • echo hello > test/test.txt
  • create repro.js:
var fs = require('fs');
var chokidar = require('chokidar');

// Watch current directory and ignore the node_modules folder
chokidar.watch('.', {ignored: /node_modules/}).on('all', (event, path) => {
  console.log(event, path);
});

// After sufficient time, attempt to rename the test folder
// Note: this is also reproducible using `mv` on the command line
setTimeout(function() {
    fs.rename('test', 'test2', function(err) {
        if (err) {
            console.log(err);
        } else {
            console.log('rename ok');
        }
    });
}, 1000);

WSL (Ubuntu 18.04):
image

Ubuntu 18.04:
image

I don't think it is terribly important (other colleagues are able to reproduce with other node versions), but I am using nodejs v8.11.3

Activity

  1. therealkenc commented on Jul 20, 2018

    @therealkenc

    I don't think it is terribly important (other colleagues are able to reproduce with other node versions)

    Nah it's a manifestation of about the most pervasive bug around here (if you don't count 0xhexdigits fail at startup). Call this dupe #1956 but you can pick any dating back to #14.

  2. changed the title [-]EACCESS when renaming folder that is being watched from nodejs[/-] [+]EACCES when renaming folder that is being watched from nodejs[/+] on Jul 22, 2018
  3. qwabra commented on May 20, 2020

    @qwabra

    this does not work for me

    code.visualstudio.com/docs

    // settings.json
    {
        "remote.WSL.fileWatcher.polling": true
    }

    but this is helped

    // settings.json
    {
        "files.watcherExclude": {
            "**/**/*": true
        }
    }
  4. 95th commented on May 21, 2020

    @95th

    qwabra I tried your approach and even that doesn't work.

    I tried:

        "remote.WSL.fileWatcher.polling": true,
    

    then

        "files.watcherExclude": {
            "**/**/*": true
        }
    

    then both.

    None of this works for me.

    Can anyone please help?

  5. JordanSimba commented on Jun 14, 2020

    @JordanSimba

    This is pretty annoying... for now I just close VS code since the file watcher has a lock on the files, do file work in terminal or file explorer and reopen when done with code . in ubuntu.
    Otherwise, unless there is a reason to not upgrade to WSL 2 I would suggest anybody does so.

  6. DerekNonGeneric commented on Jul 2, 2020

    @DerekNonGeneric

    Why is the workaround from #3395 (comment) not explicitly stated in the VS Code docs section about known WSL limitations? It should note that all workspace files must be excluded from being watched otherwise the problem will persist…

  7. qwabra commented on Jul 13, 2020

    @qwabra

    ...
    for now I just close VS code since the file watcher has a lock on the files, do file work in terminal or file explorer and reopen
    ...

    you can just open settings.json and switch trigger false/true in "**/*": false

    {
        "files.watcherExclude": {
            //
            // block Svelte update
            "**/*": false,
            // "**/*": true,
            //
            "**/.git/objects/**": true,
            "**/.git/subtree-cache/**": true,
            "**/node_modules/**": true,
            "**/.hg/store/**": true
        },
    }
    

    it can be set locally

    (use workspace settings) .vscode/settings.json
    see docs

  8. Spongman commented on Jul 31, 2020

    @Spongman

    something is fundamentally broken here. while having my remote-wsl workspace open in vscode, i get the following in a command prompt:

    C:\WINDOWS\system32>handle my-directory-name | wsl wc -l
    177481
    

    that means the windows kernel has every single one of the files in my workspace open.

    i have the following in my settings.json:

    	"remote.WSL.fileWatcher.polling": true
    
  9. byteroll commented on Sep 12, 2020

    @byteroll

    this does not work for me

    code.visualstudio.com/docs

    // settings.json
    {
        "remote.WSL.fileWatcher.polling": true
    }

    but this is helped

    // settings.json
    {
        "files.watcherExclude": {
            "**/**/*": true
        }
    }

    Thank you. This also solved my problem in installing go tools on WSL.

  10. SanjivG10 commented on Sep 27, 2020

    @SanjivG10

    // settings.json (located in %appdata%/code/user/settings.json)
    {
    "files.watcherExclude": {
    "//*": true
    }
    }

    After saving it, restart VsCode.

  11. added a commit that references this issue on Jan 6, 2022
  12. asimarora commented on Jan 29, 2024

    @asimarora

    Hello,
    I know the issue is closed but summarizing the full steps. I got the what but was not able to get how of it from this chat.
    I am using WSL1 with Docker Desktop

    File -> Preferences -> Settings
    Click on the Open Settings(JSON) button on top right corner and change this "remote.WSL.fileWatcher.polling": true.

    Hope I am not repeating someone else answer :)

  13. 554948671 commented on Feb 24, 2026

    @554948671

    تعليقات

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions