1'use strict';
2
3require('../common');
4const assert = require('assert');
5const fs = require('fs');
6
7const errUnknownBuiltinModuleRE = /^No such built-in module: /u;
8
9// For direct use of require expressions inside of CJS modules,
10// all kinds of specifiers should work without issue.
11{
12  assert.strictEqual(require('fs'), fs);
13  assert.strictEqual(require('node:fs'), fs);
14
15  assert.throws(
16    () => require('node:unknown'),
17    {
18      code: 'ERR_UNKNOWN_BUILTIN_MODULE',
19      message: errUnknownBuiltinModuleRE,
20    },
21  );
22
23  assert.throws(
24    () => require('node:internal/test/binding'),
25    {
26      code: 'ERR_UNKNOWN_BUILTIN_MODULE',
27      message: errUnknownBuiltinModuleRE,
28    },
29  );
30}
31
32// `node:`-prefixed `require(...)` calls bypass the require cache:
33{
34  const fakeModule = {};
35
36  require.cache.fs = { exports: fakeModule };
37
38  assert.strictEqual(require('fs'), fakeModule);
39  assert.strictEqual(require('node:fs'), fs);
40
41  delete require.cache.fs;
42}
43