stacktracejs / error-stack-parser

Extract meaning from JS Errors
https://www.stacktracejs.com/#!/docs/error-stack-parser
MIT License
458 stars 52 forks source link

Parsing a stack trace in Node.js throws an exception #45

Closed ashleydavis closed 2 years ago

ashleydavis commented 5 years ago

Hi thanks for this library. It looks great all though I've had some problems getting off the starting block with it.

I've prepared an example project which I believe should work but while parsing a stack trace from an exception it throws an error.

Expected Behavior

No exception should be thrown while parsing the stack trace in the example project.

Current Behavior

The following exception is thrown while parsing the stack trace in the example project:

C:\projects\github\stack-trace-test\node_modules\error-stack-parser\error-stack-parser.js:31                                      
                return this.parseV8OrIE(error);                                                                                   
                            ^                                                                                                     

TypeError: Cannot read property 'parseV8OrIE' of undefined                                                                        
    at ErrorStackParser$$parse (C:\projects\github\stack-trace-test\node_modules\error-stack-parser\error-stack-parser.js:31:29)  
    at Object.<anonymous> (C:\projects\github\stack-trace-test\my test script.js:18:20)                                           
    at Module._compile (module.js:643:30)                                                                                         
    at Object.Module._extensions..js (module.js:654:10)                                                                           
    at Module.load (module.js:556:32)                                                                                             
    at tryModuleLoad (module.js:499:12)                                                                                           
    at Function.Module._load (module.js:491:3)                                                                                    
    at Function.Module.runMain (module.js:684:10)                                                                                 
    at startup (bootstrap_node.js:187:16)                                                                                         
    at bootstrap_node.js:608:3                                                                                                    

Steps to Reproduce (for bugs)

I've prepared an example repository: https://github.com/ashleydavis/stack-trace-test

Clone the repo. Or download and unpack the repo. Use npm install to install dependencies. Use npm start to run the example project.

The exception mentioned above is thrown.

Context

I was hoping to use your stack trace parser in my project, but I've been blocked from using it by some basic problems. This is just the first issue, if we can solve this one I'll prepare an example that demonstrates the next problem.

Your Environment

Possible Solution

Sorry, no idea.

ashleydavis commented 5 years ago

I have a work around to this problem.

Code like this doesn't work:

const { parse } = require('error-stack-parser');

...

const frames = parse(error);

This code does work:

const errorStackParser = require('error-stack-parser');

...

const frames = errorStackParser.parse(error);

This is no longer a crucial problem for me, but would be nice if it would work because that's a common coding idiom in JavaScript.

Jikstra commented 3 years ago

What also works is following:

import errorStackParser from 'error-stack-parser'

const frames = errorStackParser.parse(error);

I think the problem is that if one invokes parse without the outer scope/object, this will be undefined in https://github.com/stacktracejs/error-stack-parser/blob/master/error-stack-parser.js#L27

eriwen commented 2 years ago

I merged #74 to address this and published v2.1.0