File tree Expand file tree Collapse file tree 4 files changed +57
-0
lines changed Expand file tree Collapse file tree 4 files changed +57
-0
lines changed Original file line number Diff line number Diff line change @@ -376,6 +376,25 @@ fs.access('file/that/does/not/exist', (err) => {
376376});
377377```
378378
379+ ## ` util.getSystemErrorMap() `
380+ <!-- YAML
381+ added: REPLACEME
382+ -->
383+
384+ * Returns: {Map}
385+
386+ Returns a Map of all system error codes available from the Node.js API.
387+ The mapping between error codes and error names is platform-dependent.
388+ See [ Common System Errors] [ ] for the names of common errors.
389+
390+ ``` js
391+ fs .access (' file/that/does/not/exist' , (err ) => {
392+ const errorMap = util .getSystemErrorMap ();
393+ const name = errorMap .get (err .errno );
394+ console .error (name); // ENOENT
395+ });
396+ ```
397+
379398## ` util.inherits(constructor, superConstructor) `
380399<!-- YAML
381400added: v0.3.0
Original file line number Diff line number Diff line change @@ -44,6 +44,13 @@ const experimentalWarnings = new Set();
4444
4545const colorRegExp = / \u001b \[ \d \d ? m / g; // eslint-disable-line no-control-regex
4646
47+ let uvBinding ;
48+
49+ function lazyUv ( ) {
50+ uvBinding = uvBinding ?? internalBinding ( 'uv' ) ;
51+ return uvBinding ;
52+ }
53+
4754function removeColors ( str ) {
4855 return str . replace ( colorRegExp , '' ) ;
4956}
@@ -271,6 +278,10 @@ function getSystemErrorName(err) {
271278 return entry ? entry [ 0 ] : `Unknown system error ${ err } ` ;
272279}
273280
281+ function getSystemErrorMap ( ) {
282+ return lazyUv ( ) . getErrorMap ( ) ;
283+ }
284+
274285const kCustomPromisifiedSymbol = SymbolFor ( 'nodejs.util.promisify.custom' ) ;
275286const kCustomPromisifyArgsSymbol = Symbol ( 'customPromisifyArgs' ) ;
276287
@@ -414,6 +425,7 @@ module.exports = {
414425 emitExperimentalWarning,
415426 filterDuplicateStrings,
416427 getConstructorOf,
428+ getSystemErrorMap,
417429 getSystemErrorName,
418430 isError,
419431 isInsideNodeModules,
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ const types = require('internal/util/types');
5757
5858const {
5959 deprecate,
60+ getSystemErrorMap,
6061 getSystemErrorName : internalErrorName ,
6162 promisify
6263} = require ( 'internal/util' ) ;
@@ -244,6 +245,7 @@ module.exports = {
244245 deprecate,
245246 format,
246247 formatWithOptions,
248+ getSystemErrorMap,
247249 getSystemErrorName,
248250 inherits,
249251 inspect,
Original file line number Diff line number Diff line change 1+ // Flags: --expose-internals
2+ 'use strict' ;
3+
4+ require ( '../common' ) ;
5+ const assert = require ( 'assert' ) ;
6+ const {
7+ getSystemErrorMap,
8+ _errnoException
9+ } = require ( 'util' ) ;
10+
11+ const { internalBinding } = require ( 'internal/test/binding' ) ;
12+ const uv = internalBinding ( 'uv' ) ;
13+ const uvKeys = Object . keys ( uv ) ;
14+
15+ const errMap = getSystemErrorMap ( ) ;
16+
17+ uvKeys . forEach ( ( key ) => {
18+ if ( ! key . startsWith ( 'UV_' ) )
19+ return ;
20+
21+ const err = _errnoException ( uv [ key ] ) ;
22+ const name = uv . errname ( uv [ key ] ) ;
23+ assert . strictEqual ( errMap . get ( err . errno ) [ 0 ] , name ) ;
24+ } ) ;
You can’t perform that action at this time.
0 commit comments