JavaScript
power-assert
jsdom
eater

jsdom + power-assert + eater で Invalid TypeError が出て失敗する時

More than 1 year has passed since last update.

なんかどうも jsdom + power-assert + 自作の eater を使ってテストをしていたら espower-loaderが中で使っている source-map-support のモジュールがエラーになる。

エラーの場所はココ

https://github.com/evanw/node-source-map-support/blob/master/source-map-support.js#L407

で、source-map-support の中で何やってるかというと、 error.stack プロパティがあるかどうかを見てるが、 stack を触った瞬間に下記のエラーになり、巻き込んで別な例外が出て死ぬ

TypeError: Invalid URL
Error /Users/furukawa.yosuke/Program/xxxxxxxx/node_modules/espower-loader/node_modules/source-map-support/source-map-support.js:388
      var hasStack = (arguments[1] && arguments[1].stack);
                                                  ^

どうも stack を呼んだ時に stack プロパティ自身が先にExceptionを吐いてしまうっぽい。

そもそもこの例外が起きる理由をよく読むと jsdom の下記のissueに行き着いた。

https://github.com/tmpvar/jsdom/issues/1277

つまり、 url option が無いとparseに失敗して Invalid なエラーになるらしい。
jsdomのオプションに url を追加して対応。

jsdom.jsdom('<html ....', {
 // url
 url: 'http://example.com'
})