Skip to content

fs, cjs modules: failed require prevents valid require from loading a module just written by writeFileSyncΒ #36638

@vsemozhetbyt

Description

@vsemozhetbyt
  • Version: 15.5.0
  • Platform: Windows 10 x64
  • Subsystem: fs, cjs modules

What steps will reproduce the bug?

It seems there may be some race conditions.

Error (cannot find module...):

const fs = require('fs');

try { require('./test.json'); } catch (err) {}

fs.writeFileSync('test.json', '[]');
console.log(require('./test.json'));

With timeout β€” OK:

const fs = require('fs');

try { require('./test.json'); } catch (err) {}

fs.writeFileSync('test.json', '[]');
setTimeout(() => { console.log(require('./test.json')); }, 1000);

With callback β€” OK:

const fs = require('fs');

try { require('./test.json'); } catch (err) {}

fs.writeFile('test.json', '[]', () => { console.log(require('./test.json')); });

Promisified β€” OK:

const fs = require('fs/promises');

try { require('./test.json'); } catch (err) {}

(async function(path) {
  await fs.writeFile('test.json', '[]');
  console.log(require('./test.json'));
})();

Without failed try β€” OK:

const fs = require('fs');

fs.writeFileSync('test.json', '[]');
console.log(require('./test.json'));

Previously reported in nodejs/help#3144

Metadata

Metadata

Assignees

No one assigned

    Labels

    moduleIssues and PRs related to the module subsystem.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions