◆ エラーを無視するように設定した agent をオプションで指定
  ◆ agent は http/https で別なので URL のプロトコルを使う側が判断して分けないといけない
◆ グローバルで無視する process.env.NODE_TLS_REJECT_UNAUTHORIZED を設定
  ◆ 必要以外のところでも無視されるから気軽に使えない

https じゃないと使えない機能を入れるとかブラウザが余計なことばかりしてくれるので証明書エラーになってるけどとりあえず https にして使ってます
Node.js からそのサーバのデータを取得しようとすると 証明書エラーが原因でエラーになりました

使ってるのは node-fetch というブラウザの fetch と同じように使えるものです
ブラウザ互換を重要視していて独自の便利機能は入れない方針みたいです

なので自分で agent 指定するしか無いみたいです
https://github.com/bitinn/node-fetch/issues/15

const fetch = require("node-fetch")
const https = require("https")
const agent = new https.Agent({ rejectUnauthorized: false })

!async function(){
const re = await fetch("https://fedora27-sv/", {agent})
console.log(await re.text())
}()

ですが これだと問題があって http のページにアクセスした場合は https の agent を指定しているのでエラーになります
せっかく fetch だとアクセス先が http か https を意識しなくて済むのに agent のせいで自分で https かを判断する必要があります

一応絶対パスでの URL のみなので

if(url.startsWith("https://")){
fetch(url, {agent})
}else{
fetch(url)
}

くらいで済みますが それでも面倒です

グローバルで証明書無視するようなオプションもあって 環境変数を設定しておけば常に証明書エラーを無視できます

const fetch = require("node-fetch")

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0

!async function(){
const re = await fetch("https://fedora27-sv/").then(e => e.text())
console.log(await re.text())
}()

ただ これは本当に全部で無視されるので 無視するつもり以外の URL にアクセスするときも無視してしまいます
そのときは無視するページにしかアクセスしないから別に問題なくても あとから外部の URL にもアクセスしたくなることはあるものです
そのときに大きく修正が必要になったり 常に無視されることを忘れていて常に無視して外部にアクセスしていたりする可能性もあります
また ライブラリが内部で勝手に通信を発生させてるならそこにも影響しています
なのでこれはあまり良い方法とは言えないと思います


fetch が独自の便利機能を入れようとしないからで 他のライブラリでは対処されていそうと思って  Node.js の http クライアントのパッケージではかなり人気の axios を見てみました
ですが これも agent を直接設定するようです

自分で https か判断しなくて良いようにしておいてくれればいいのにな