Skip to content

Commit

Permalink
Add pretty node errors (#691)
Browse files Browse the repository at this point in the history
  • Loading branch information
jackjocross authored and jaredpalmer committed Jul 5, 2018
1 parent 72934d9 commit b4f9898
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 7 deletions.
4 changes: 3 additions & 1 deletion packages/razzle-dev-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
"webpackHotDevClient.js",
"setPorts.js",
"makeLoaderFinder.js",
"WebpackConfigHelpers.js"
"WebpackConfigHelpers.js",
"prettyNodeErrors.js"
],
"dependencies": {
"chalk": "1.1.3",
"jest-message-util": "^23.2.0",
"react-dev-utils": "4.1.0",
"sockjs-client": "1.1.4",
"strip-ansi": "3.0.1"
Expand Down
35 changes: 35 additions & 0 deletions packages/razzle-dev-utils/prettyNodeErrors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const {
formatExecError,
separateMessageFromStack,
} = require('jest-message-util');

function pretty(error) {
return `\n${formatExecError(
error,
{ rootDir: process.cwd() },
{},
undefined,
true
)}`;
}

function usePrettyErrors(transform) {
const { prepareStackTrace } = Error;

Error.prepareStackTrace = (error, trace) => {
const prepared = prepareStackTrace
? separateMessageFromStack(prepareStackTrace(error, trace))
: error;
const transformed = transform ? transform(prepared) : prepared;

return pretty(transformed);
};
}

// Currently needed to fix sourcemap path
const stackTransform = ({ stack = '', ...rest }) => ({
stack: stack.replace('/build/webpack:', ''),
...rest,
});

usePrettyErrors(stackTransform);
3 changes: 3 additions & 0 deletions packages/razzle/config/createConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,9 @@ module.exports = (
config.watch = true;
config.entry.unshift('webpack/hot/poll?300');

// Pretty format server errors
config.entry.unshift('razzle-dev-utils/prettyNodeErrors');

const nodeArgs = ['-r', 'source-map-support/register'];

// Passthrough --inspect and --inspect-brk flags (with optional [host:port] value) to node
Expand Down
124 changes: 118 additions & 6 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
# yarn lockfile v1


"@arr/every@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.0.tgz#314f8168f50ae48a032cfdad5fdb436f464a97ac"

"@babel/code-frame@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
Expand Down Expand Up @@ -1180,6 +1184,14 @@ babel-loader@7.1.1:
loader-utils "^1.0.2"
mkdirp "^0.5.1"

babel-loader@7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015"
dependencies:
find-cache-dir "^1.0.0"
loader-utils "^1.0.2"
mkdirp "^0.5.1"

babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
Expand Down Expand Up @@ -3028,7 +3040,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"

create-react-class@^15.6.2:
create-react-class@^15.5.1, create-react-class@^15.6.2:
version "15.6.3"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
dependencies:
Expand Down Expand Up @@ -4480,7 +4492,13 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"

file-loader@0.11.2, file-loader@1.1.11, file-loader@^1.1.11:
file-loader@0.11.2:
version "0.11.2"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34"
dependencies:
loader-utils "^1.0.2"

file-loader@^1.1.11:
version "1.1.11"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
dependencies:
Expand Down Expand Up @@ -5330,6 +5348,15 @@ hide-powered-by@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/hide-powered-by/-/hide-powered-by-1.0.0.tgz#4a85ad65881f62857fc70af7174a1184dccce32b"

history@^3.0.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c"
dependencies:
invariant "^2.2.1"
loose-envify "^1.2.0"
query-string "^4.2.2"
warning "^3.0.0"

history@^4.7.2:
version "4.7.2"
resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b"
Expand Down Expand Up @@ -6592,6 +6619,16 @@ jest-message-util@^23.1.0:
slash "^1.0.0"
stack-utils "^1.0.1"

jest-message-util@^23.2.0:
version "23.2.0"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.2.0.tgz#591e8148fff69cf89b0414809c721756ebefe744"
dependencies:
"@babel/code-frame" "^7.0.0-beta.35"
chalk "^2.0.1"
micromatch "^3.1.10"
slash "^1.0.0"
stack-utils "^1.0.1"

jest-mock@^20.0.3:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59"
Expand Down Expand Up @@ -7905,6 +7942,12 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"

matchit@^1.0.0:
version "1.0.6"
resolved "https://registry.yarnpkg.com/matchit/-/matchit-1.0.6.tgz#825da06468bd324f0219ebe28e12a41bfb5524c4"
dependencies:
"@arr/every" "^1.0.0"

material-ui@^1.0.0-beta.38:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/material-ui/-/material-ui-1.0.0-beta.41.tgz#0869bed008caa10003ab20ea726476b560c23160"
Expand Down Expand Up @@ -8045,6 +8088,24 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"

micromatch@^3.1.10:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
dependencies:
arr-diff "^4.0.0"
array-unique "^0.3.2"
braces "^2.3.1"
define-property "^2.0.2"
extend-shallow "^3.0.2"
extglob "^2.0.4"
fragment-cache "^0.2.1"
kind-of "^6.0.2"
nanomatch "^1.2.9"
object.pick "^1.3.0"
regex-not "^1.0.0"
snapdragon "^0.8.1"
to-regex "^3.0.2"

micromatch@^3.1.4, micromatch@^3.1.8:
version "3.1.9"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89"
Expand Down Expand Up @@ -8820,7 +8881,7 @@ parse5@^3.0.3:
dependencies:
"@types/node" "*"

parseurl@^1.3.0, parseurl@~1.3.2:
parseurl@^1.3.0, parseurl@^1.3.2, parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"

Expand Down Expand Up @@ -8966,6 +9027,13 @@ pn@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"

polka@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/polka/-/polka-0.3.4.tgz#685bc3529a4582378853d568aa15d78eb3318eb3"
dependencies:
parseurl "^1.3.2"
trouter "^1.0.0"

popper.js@^1.12.9:
version "1.14.3"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095"
Expand Down Expand Up @@ -9516,6 +9584,13 @@ prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8,
loose-envify "^1.3.1"
object-assign "^4.1.1"

prop-types@^15.5.6:
version "15.6.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
dependencies:
loose-envify "^1.3.1"
object-assign "^4.1.1"

protobufjs@^5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.2.tgz#59748d7dcf03d2db22c13da9feb024e16ab80c91"
Expand Down Expand Up @@ -9624,7 +9699,7 @@ qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"

query-string@^4.1.0:
query-string@^4.1.0, query-string@^4.2.2:
version "4.3.4"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
dependencies:
Expand Down Expand Up @@ -9990,6 +10065,30 @@ react-router-dom@^4.2.2:
react-router "^4.2.0"
warning "^3.0.0"

react-router-redux@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e"

react-router-scroll@0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/react-router-scroll/-/react-router-scroll-0.4.2.tgz#4b90e8707edf96eba7f066d94c5b4338bd6848b7"
dependencies:
prop-types "^15.5.6"
scroll-behavior "^0.9.3"
warning "^3.0.0"

react-router@^3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.2.1.tgz#b9a3279962bdfbe684c8bd0482b81ef288f0f244"
dependencies:
create-react-class "^15.5.1"
history "^3.0.0"
hoist-non-react-statics "^2.3.1"
invariant "^2.2.1"
loose-envify "^1.2.0"
prop-types "^15.5.6"
warning "^3.0.0"

react-router@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986"
Expand Down Expand Up @@ -10674,6 +10773,13 @@ schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4
ajv "^6.1.0"
ajv-keywords "^3.1.0"

scroll-behavior@^0.9.3:
version "0.9.9"
resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz#ebfe0658455b82ad885b66195215416674dacce2"
dependencies:
dom-helpers "^3.2.1"
invariant "^2.2.2"

scroll@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/scroll/-/scroll-2.0.3.tgz#0951b785544205fd17753bc3d294738ba16fc2ab"
Expand Down Expand Up @@ -10732,7 +10838,7 @@ serve-index@^1.7.2:
mime-types "~2.1.17"
parseurl "~1.3.2"

serve-static@1.13.2:
serve-static@1.13.2, serve-static@^1.13.2:
version "1.13.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
dependencies:
Expand Down Expand Up @@ -11632,7 +11738,7 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"

to-regex@^3.0.1:
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
dependencies:
Expand Down Expand Up @@ -11687,6 +11793,12 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"

trouter@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/trouter/-/trouter-1.1.0.tgz#ce0ad2aaa4f13af21e34785079c3352298b9259a"
dependencies:
matchit "^1.0.0"

ts-jest@^22.4.5:
version "22.4.6"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.6.tgz#a5d7f5e8b809626d1f4143209d301287472ec344"
Expand Down

0 comments on commit b4f9898

Please sign in to comment.