File tree Expand file tree Collapse file tree 3 files changed +23
-6
lines changed
Expand file tree Collapse file tree 3 files changed +23
-6
lines changed Original file line number Diff line number Diff line change 11unreleased
22==========
33
4+ * Fix stack trace for strict json parse error
45 * deps: depd@~ 1.1.2
56 - perf: remove argument reassignment
67 * deps: http-errors@~ 1.6.3
Original file line number Diff line number Diff line change @@ -89,6 +89,7 @@ function json (options) {
8989 return JSON . parse ( body , reviver )
9090 } catch ( e ) {
9191 throw normalizeJsonSyntaxError ( e , {
92+ message : e . message ,
9293 stack : e . stack
9394 } )
9495 }
@@ -208,12 +209,9 @@ function normalizeJsonSyntaxError (error, obj) {
208209 }
209210 }
210211
211- var props = Object . keys ( obj )
212-
213- for ( var j = 0 ; j < props . length ; j ++ ) {
214- var prop = props [ j ]
215- error [ prop ] = obj [ prop ]
216- }
212+ // replace stack before message for Node.js 0.10 and below
213+ error . stack = obj . stack . replace ( error . message , obj . message )
214+ error . message = obj . message
217215
218216 return error
219217}
Original file line number Diff line number Diff line change @@ -273,6 +273,17 @@ describe('bodyParser.json()', function () {
273273 . send ( 'true' )
274274 . expect ( 400 , 'entity.parse.failed' , done )
275275 } )
276+
277+ it ( 'should include correct message in stack trace' , function ( done ) {
278+ request ( this . server )
279+ . post ( '/' )
280+ . set ( 'Content-Type' , 'application/json' )
281+ . set ( 'X-Error-Property' , 'stack' )
282+ . send ( 'true' )
283+ . expect ( 400 )
284+ . expect ( shouldContainInBody ( parseError ( '#rue' ) . replace ( '#' , 't' ) ) )
285+ . end ( done )
286+ } )
276287 } )
277288 } )
278289
@@ -639,3 +650,10 @@ function parseError (str) {
639650 return e . message
640651 }
641652}
653+
654+ function shouldContainInBody ( str ) {
655+ return function ( res ) {
656+ assert . ok ( res . text . indexOf ( str ) !== - 1 ,
657+ 'expected \'' + res . text + '\' to contain \'' + str + '\'' )
658+ }
659+ }
You can’t perform that action at this time.
0 commit comments