It's dynamic, but a module is executed only once like in ESM. It's like a sync version of ESM's import()
:
let count = 10;
while (count--) {
const random = ['fs', 'fs2'][Math.floor(Math.random() * 1.9999)];
console.log('require', random);
try {
const fs = require(random);
} catch (e) {
console.log(e.message);
}
}
Each time this throws an error randomly:
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs
require fs
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js
require fs2
Cannot find module 'fs2'
Require stack:
- /bytex/change-color/test.js