doc: fix documentation for `MODULE_NOT_FOUND` and `ERR_MODULE_NOT_FOUND`
ERR_MODULE_NOT_FOUND
was still marked as experimental, probably an oversight from https://github.com/nodejs/node/pull/35781.
ERR_MODULE_NOT_FOUND
is thrown wether the target specifier would be an ES module or not (we cannot really know the format of a file that doesn't exist anyway).
I've added a note regarding which module loader is involved (sorry @GeoffreyBooth), which is unfortunate but I didn't know how to explain the difference otherwise.
Repro snippets
$ node /nope
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module '/nope'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v17.4.0
$ node -e 'require("/nope")'
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module '/nope'
Require stack:
- …/[eval]
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18)
at [eval]:1:1
at Script.runInThisContext (node:vm:129:12)
at Object.runInThisContext (node:vm:305:38)
at node:internal/process/execution:75:19
at [eval]-wrapper:6:22
at evalScript (node:internal/process/execution:74:60) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '…/[eval]' ]
}
Node.js v17.4.0
$ node --input-type=module -e 'import"/nope"'
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/nope' imported from …/[eval1]
at new NodeError (node:internal/errors:371:5)
at finalizeResolution (node:internal/modules/esm/resolve:394:11)
at moduleResolve (node:internal/modules/esm/resolve:944:10)
at defaultResolve (node:internal/modules/esm/resolve:1041:11)
at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:79:40)
at link (node:internal/modules/esm/module_job:78:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v17.4.0
$ node --experimental-specifier-resolution=node /nope
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/nope' imported from …
at new NodeError (node:internal/errors:371:5)
at finalizeResolution (node:internal/modules/esm/resolve:383:11)
at moduleResolve (node:internal/modules/esm/resolve:944:10)
at defaultResolve (node:internal/modules/esm/resolve:1041:11)
at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
at ESMLoader.import (node:internal/modules/esm/loader:332:22)
at node:internal/modules/run_main:54:28
at loadESM (node:internal/process/esm_loader:88:11)
at async handleMainPromise (node:internal/modules/run_main:61:12) {
code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v17.4.0
$ node --input-type=module -e 'import("/nope").catch(console.error)'
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/nope' imported from …/[eval1]
at new NodeError (node:internal/errors:371:5)
at finalizeResolution (node:internal/modules/esm/resolve:394:11)
at moduleResolve (node:internal/modules/esm/resolve:944:10)
at defaultResolve (node:internal/modules/esm/resolve:1041:11)
at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
at ESMLoader.import (node:internal/modules/esm/loader:332:22)
at importModuleDynamically (node:internal/modules/esm/loader:213:29)
at importModuleDynamicallyCallback (node:internal/process/esm_loader:35:14)
at file://…/[eval1]:1:1 {
code: 'ERR_MODULE_NOT_FOUND'
}
$ node --input-type=commonjs -e 'import("/nope").catch(console.error)'
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/nope' imported from …/[eval]
at new NodeError (node:internal/errors:371:5)
at finalizeResolution (node:internal/modules/esm/resolve:394:11)
at moduleResolve (node:internal/modules/esm/resolve:944:10)
at defaultResolve (node:internal/modules/esm/resolve:1041:11)
at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
at ESMLoader.import (node:internal/modules/esm/loader:332:22)
at importModuleDynamically (node:internal/process/execution:81:29)
at importModuleDynamicallyWrapper (node:internal/vm/module:437:21)
at importModuleDynamicallyCallback (node:internal/process/esm_loader:35:14) {
code: 'ERR_MODULE_NOT_FOUND'
}