TypeScript で作成したコードを実行した際に出たエラー。
(node:47543) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
どうやら OpenAPI Generator で typescript-fetch を generate に利用したため、内部で「Fetch API」が使われている模様。
今回はこの Warning の対応をしていきます。
NodeJSのバージョン
ちなみに、ローカルの NodeJS が brew でインストールされていて古かったので変更を。
残念ながら brew だと偶数バージョンしか選択できないようなので nodenv でバージョン切り替えできるようにしました。
しかも、まだ 18.x はインストールできなさそう。
1 2 3 4 5 6 7 8 9 10 | $ brew search node node-build ✔ node@10 node@14 nodeenv node ✔ node@12 node@16 nodenv ✔ |
一旦、brew でインストールされている node は削除しちゃいましょう。
1 | $ brew remove node |
nodenvでバージョン管理
では早速、nodenv をインストールしていきましょう。
nodenv をインストールしたら、どの node バージョンがインストール可能か確認します。
1 2 3 4 5 6 7 8 9 10 | $ brew install nodenv $ nodenv install -l 16.15.1 17.9.1 18.0.0 18.1.0 18.2.0 18.3.0 |
今回の ExperimentalWarning の挙動を確認するなら、17.9.1 と 18.1.0 を入れてみましょうか。
1 2 3 4 5 6 7 8 9 10 | $ nodenv install 17.9.1 $ nodenv install 18.1.0 $ nodenv global 18.1.0 $ nodenv versions 17.9.0 * 18.1.0 (set by /hoge/.nodenv/version) |
node18でfetchの動作確認
どうやら、node18 では同様の問題は出ませんでした。
この Warning は node17.x で発生したものなので、17.x で確認してみましょうか。
node17でfetchの動作確認
node17 では同様の問題が発生しました。
17.9.0 であれば、fetch の機能は持っているのでエラーになるのは不思議です。
よくよく調べてみると、node 実行時に「–experimental-fetch」のオプションが必要とのこと。
node –experimental-fetch dest/index.js
これを付けたら警告が出なくなりました。
まとめ
NodeJS の ExperimentalWarning の警告について調べてきました。
NodeJS もそうですが、Kubernetes など最近はメジャーバージョンアップの頻度やサポート期間が厳密になりつつあります。
いつでも複数バージョンが気軽に試せる開発環境を用意しておきたいですね。
nodenv に限らず、nvm(Node Version Manager)や nodebrew など複数の NodeJS を管理できるツールはあります。
どれが正解というわけでもないので、使いやすいツールで OK です。
っと書いていたら、過去にこんな記事を書いていたことに気付く・・・。
