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: assign error code to bootstrap_node created error #11298

Closed
wants to merge 1 commit into from

Conversation

jasnell
Copy link
Member

@jasnell jasnell commented Feb 10, 2017

This does not use the internal/errors.js module because the error in question may actually be caused by an attempt to load internal/errors.js. This error should only be encountered in the case of a bug within Node.js itself.

Ref: #11273

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • documentation is changed or added
  • commit message follows commit guidelines
Affected core subsystem(s)

errors, src

@jasnell jasnell added the semver-minor PRs that contain new features and should be released in the next minor version. label Feb 10, 2017
@nodejs-github-bot nodejs-github-bot added errors Issues and PRs related to JavaScript errors originated in Node.js core. lib / src Issues and PRs related to general changes in the lib or src directory. labels Feb 10, 2017
@Fishrock123
Copy link
Member

This is perhaps misleading as these are not necessarily "native" as in "C/C++" modules.

@jasnell
Copy link
Member Author

jasnell commented Feb 10, 2017

Yep. It certainly is. Basing this off the existing wording (I did not change the error message at all). Do you have a suggestion for an alternative?

@@ -563,6 +563,17 @@ found [here][online].
encountered by [`http`][] or [`net`][] -- often a sign that a `socket.end()`
was not properly called.

<a id="nodejs-error-codes">
## Node.js Error Codes

Copy link
Member

@joyeecheung joyeecheung Feb 10, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably need a section explaining the new error system(like the section on "system errors" above mentioning those would have error.code, error. errno and error. syscall properties, then list the error codes). Going straight to error code descriptions seems pretty confusing if people read it from the top to the bottom...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, I agree. I was thinking of doing that in a separate PR

@joyeecheung
Copy link
Member

@jasnell @Fishrock123 do we have a name for the lib modules in general?

@joyeecheung
Copy link
Member

LGTM with the naming sorted out

@jasnell
Copy link
Member Author

jasnell commented Feb 11, 2017

@joyeecheung ... not really with regards to naming. Perhaps built-in or internal would work?

@joyeecheung
Copy link
Member

Sorry, I wasn't being clear. I meant I am fine with native as long as we have a decision native is the word we use for lib modules, whichever we use we should stick to that :D

I do think built-in would be more unambiguous though. For contributors internal sounds like lib/internal modules, but if I understand correctly this covers unknown lib modules.

@@ -563,6 +563,17 @@ found [here][online].
encountered by [`http`][] or [`net`][] -- often a sign that a `socket.end()`
was not properly called.

<a id="nodejs-error-codes">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't we let the tools to generate the id for all these? It would be consistent that way.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because these anchors need to be consistent and predictable even if the structure of the document changes. Doing it this way ensures that the anchors will not change.

@@ -85,4 +85,5 @@ module.exports = exports = {
//
// Note: Please try to keep these in alphabetical order
E('ERR_ASSERTION', (msg) => msg);
E('ERR_UNKNOWN_NATIVE_MODULE', (id) => `No such built-in module: ${id}`);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that the error message is updated to No such built-in module, the error code should be changed accordingly?

@jasnell
Copy link
Member Author

jasnell commented Feb 14, 2017

Updated. PTAL

@jasnell jasnell added semver-major PRs that contain breaking changes and should be released in the next major version. and removed semver-minor PRs that contain new features and should be released in the next minor version. labels Feb 14, 2017
@jasnell
Copy link
Member Author

jasnell commented Mar 22, 2017

Ping @nodejs/ctc ... can I get a review on this?

@jasnell
Copy link
Member Author

jasnell commented Mar 22, 2017

Copy link
Member

@mhdawson mhdawson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jasnell jasnell added the blocked PRs that are blocked by other issues or PRs. label Apr 5, 2017
@jasnell
Copy link
Member Author

jasnell commented Apr 20, 2017

This is no longer blocked. PR updated.
@targos @mhdawson @joyeecheung ... PTAL, does this still LGTY?

@Fishrock123
Copy link
Member

Fishrock123 commented Apr 20, 2017

I think this is a misnomer, IIRC that module does not need to be built-in to possibly hit this path? (Don't all native modules hit this or something?)

Note: I understand it is called "NativeModule as in "builtin natives".

@jasnell
Copy link
Member Author

jasnell commented Apr 20, 2017

Not that I'm aware of. In every condition that I was able to find, most users will only see the "Cannot find module" error. This appears to be hit only in very specific cases involving the built-in modules. I could be wrong, but that's what I've been able to see. There's aren't even any test cases that I can see that trigger/test this.

@joyeecheung
Copy link
Member

@jasnell FWIW, I have only ever hit this path when I accidentally deleted a js file from node.gyp...

// Model the error off the internal/errors.js model, but
// do not use that module given that it could actually be
// the one causing the error if there's a bug in Node.js
const err = new Error(`No such built-in module ${id}`);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: There is a colon in errors.js file

@jasnell
Copy link
Member Author

jasnell commented Apr 21, 2017

@jasnell
Copy link
Member Author

jasnell commented Apr 21, 2017

@Fishrock123 ... are you satisfied with this?

Copy link
Member

@targos targos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with a nit

// the one causing the error if there's a bug in Node.js
const err = new Error(`No such built-in module: ${id}`);
err.code = 'ERR_UNKNOWN_BUILTIN_MODULE';
err.name = 'Error[ERR_UNKNOWN_BUILTIN_MODULE]';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: there should be a space now that 7b4a72d has landed.

This does not use the internal/errors.js module because the error
in question may actually be *caused* by an attempt to load
internal/errors.js. This error should only be encountered in the
case of a bug within Node.js itself.

Ref: nodejs#11273
jasnell added a commit that referenced this pull request Apr 24, 2017
This does not use the internal/errors.js module because the error
in question may actually be *caused* by an attempt to load
internal/errors.js. This error should only be encountered in the
case of a bug within Node.js itself.

PR-URL: #11298
Ref: #11273
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
@jasnell
Copy link
Member Author

jasnell commented Apr 24, 2017

Landed in 251e5ed

@jasnell jasnell closed this Apr 24, 2017
@Fishrock123
Copy link
Member

Hmm, ok sounds good to me. Belated LGTM.

@Trott Trott removed the ctc-review label May 1, 2017
@jasnell jasnell mentioned this pull request May 11, 2017
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. lib / src Issues and PRs related to general changes in the lib or src directory. semver-major PRs that contain breaking changes and should be released in the next major version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants