Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

errors.js module #14554

Closed
streamich opened this issue Jul 31, 2017 · 14 comments
Closed

errors.js module #14554

streamich opened this issue Jul 31, 2017 · 14 comments
Labels
errors Issues and PRs related to JavaScript errors originated in Node.js core. feature request Issues that request new features to be added to Node.js. stale

Comments

@streamich
Copy link

streamich commented Jul 31, 2017

Node now has internal/errors.js module which allows to set static error codes for errors, which is great. Would be good to expose Node's internal error constructors in a new module say require('errors').

import {TypeError as NodesTypeError} from 'errors';

My use case is as follows: I am now rewriting an in-memory file system module memfs that mimics how fs module works, I would like to throw exactly the same errors as Node does, so that it can be used for testing, so now I have to basically copy-paste the internal/errors.js file into my project to be able to create similar errors to what Node does.

@Fishrock123 Fishrock123 added feature request Issues that request new features to be added to Node.js. errors Issues and PRs related to JavaScript errors originated in Node.js core. labels Jul 31, 2017
@jasnell
Copy link
Member

jasnell commented Jul 31, 2017

Eventually this may be a possibility. For the time being, however, while we are still in the process of migrating all of our internal errors, I would rather avoid it. The reason is due to the fact that changes to that internal API are still possible / likely as we move along.

@XGHeaven
Copy link
Contributor

I think we can create a new module named errors(better) or others.
errors export Error/TypeError/RangeError/... just like internal/errors exports.
And more, errors export a helper function to create ErrorClass with some type.
We assign a temp name makeError to helper function.

const PathNotFoundError = errors.makeError('ERR_PATH_NOT_FOUND', '%s not found')
const err = new PathNotFoundError('/usr/foo/bar')
// err.code === 'ERR_PATH_NOT_FOUND'
// err.message === '/usr/foo/bar not found'

By the way, we can export all errors code used in internal/errors to errors. Just like errors.ERR_ASSERTION that equals 'ERR_ASSERTION'.
This can help user to check which error and don't need to remember code string.
String cannot autocompletion with IDE like WS, but exports variable can do.

@streamich
Copy link
Author

@jasnell Maybe we can export just the constructors like the internal TypeError and mark this API as experimental.

@starkwang
Copy link
Contributor

I've opened an issue (#14216) and a PR (#14250) earlier before about separating the error codes to a new module, but the errors are still being migrated so they are blocked temporarily. IMHO, the appropriate time to do these is after the migration are done.
(But the migration is slower than I expected 😣 )

@gireeshpunathil
Copy link
Member

just trying to understand what needs to be done here:

  • make internal/errors.js external
  • make sure all the error classes are documented, if not already

is that so?

@marsonya
Copy link
Member

There's been no activity on this issue for a long time. @nodejs/documentation, any update on this?

@github-actions
Copy link
Contributor

There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@github-actions github-actions bot added the stale label Mar 22, 2022
@sindresorhus
Copy link

Please keep this open.

@github-actions github-actions bot removed the stale label Mar 24, 2022
@github-actions
Copy link
Contributor

There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@github-actions github-actions bot added the stale label Sep 21, 2022
@ghost ghost deleted a comment Oct 21, 2022
@github-actions
Copy link
Contributor

There has been no activity on this feature request and it is being closed. If you feel closing this issue is not the right thing to do, please leave a comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@titanism
Copy link

Please re-open this (?)

@ThePotatoChronicler
Copy link

This is such a useful feature, yet it's dead again

@nlhnt
Copy link

nlhnt commented Apr 15, 2023

Jesus... I want to test for the type of error in my unit tests and it seems like a headache? What

@ThePotatoChronicler
Copy link

Jesus... I want to test for the type of error in my unit tests and it seems like a headache? What

There is just no good way as far as I've looked. The only way I have ever found is to check if it's an instanceof Error and then check the .name property. It's horrid. I've ever only found pain when dealing with JS exceptions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
errors Issues and PRs related to JavaScript errors originated in Node.js core. feature request Issues that request new features to be added to Node.js. stale
Projects
None yet
Development

Successfully merging a pull request may close this issue.