summaryrefslogtreecommitdiff
path: root/test/parallel/test-require-node-prefix.js
blob: 957cabf13aeb114a1e74bd5438ab397a91a36d93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'use strict';

require('../common');
const assert = require('assert');
const fs = require('fs');

const errUnknownBuiltinModuleRE = /^No such built-in module: /u;

// For direct use of require expressions inside of CJS modules,
// all kinds of specifiers should work without issue.
{
  assert.strictEqual(require('fs'), fs);
  assert.strictEqual(require('node:fs'), fs);

  assert.throws(
    () => require('node:unknown'),
    {
      code: 'ERR_UNKNOWN_BUILTIN_MODULE',
      message: errUnknownBuiltinModuleRE,
    },
  );

  assert.throws(
    () => require('node:internal/test/binding'),
    {
      code: 'ERR_UNKNOWN_BUILTIN_MODULE',
      message: errUnknownBuiltinModuleRE,
    },
  );
}

// `node:`-prefixed `require(...)` calls bypass the require cache:
{
  const fakeModule = {};

  require.cache.fs = { exports: fakeModule };

  assert.strictEqual(require('fs'), fakeModule);
  assert.strictEqual(require('node:fs'), fs);

  delete require.cache.fs;
}