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