JavaScript

Node12のNewmanでCannot read property ‘_destroySSL’ of undefined

以前、「PostmanとNewmanを使って複数のAPIを連続して実行させる」という記事を書きましたが、久し振りにローカル実行してみたら以下のエラーに遭遇しました。

PostmanとNewmanを使って複数のAPIを連続して実行させるこれまでは、提供されている API を利用するケースが大半でしたが、最近は API を自分で作成する機会が増えてきました。 どちらの立...

「_destroySSL」ってなんだろうと思いながら調べてみると、同様のケースに陥っている人がいるようです。

今回はこの問題の解決方法について調べていきたいと思います。

原因はNode.jsのバージョン

以下の Git の Issue 投稿を見てみると、似たような現象が発生しています。

Did you encounter this recently, or has this bug always been there: after upgrading to Node v12.3.0

TypeError: Cannot read property ‘_destroySSL’ of undefined

投稿の通り、Node のバージョンを 12 にアップグレードした後に発生しているとのこと。

これに対して、別の Issue で、Node のバージョン 10 で試してみてとの内容が投稿されています。
nvm 使えば簡単に Node のバージョンが切り替えられるよと。

For now, can you try using Newman in Node v10 (nvm is a great tool to switch between Node versions)? We’ll fix this as soon as possible!

newman fails on 2000th interation, consistently

根本的な解決方法ではないですが、この投稿が 2 ヶ月くらい前ということを考えると、最新の Newman でもまだ解決されていないようです。

ちなみに手元の newman のバージョンは 4.1.0 なので、こちらのバージョンアップは先に試して確認しておきたいですね。

2019 年 8 月 19 日現在、最新バージョンは 4.5.4 のようです。

またチェンジログ(Change Log)を確認してみると、4.5.0 の時に修正されているような記載がありました。

Fixed a bug that caused fetching collection from HTTPS URL crashes on Node v12

CHANGELOG

newmanのアップデート

では早速、newman のバージョンアップを行います。

どうやら、最新バージョンに問題なく更新されたようです。

では、この状態で目的のプログラムを実行してみましょう。

ダメですね・・・

よくよく見てみると、4.5.0 のリリースが 5 月、そして先ほどの投稿が 6 月なので、4.5.0 で直ってないってことですね・・・。

仕方ないので Node.js のバージョン 10 を入れてみましょう。

nvmのインストール

まずは Node.js の 10 と 12 が共存できるように nvm をインストールします。

最新バージョンは v0.34.0 となっています。

ドキュメント通り設定を進めていきます。

では、インストール可能な Node.js のバージョン 10 系を探します。

LTS かつ Latest なのが v10.16.3 なのでこれにしましょう。

問題なくインストールされたようなので確認します。

現状は nvm で管理しているバージョンが v10.16.3 しかないので、これがデフォルトとなっています。

試しに v12 も入れておきますか。

今回は v10 を使いたいので、切り替えておきます。

では、これで改めてプログラムの実行です。

問題なくいけました。めでたし、めでたし?

やはり v12 だとエラーになるので、根本解決を待ちたいですね。