Axiosを使ってファイルダウンロードをするときはresponseType:'blob'の指定が必要
Axiosを使ってファイルのダウンロードをするとき
axios.get(downloadUrl)
と記述すると、ダウンロードしたファイルが意図したものにならない場合がある。
例:shift_jisのファイルをダウンロードしていて、サーバからもshift_jisコードのデータが来ていることが確認できているが、ローカルに保存されたファイルを開いてみると、shift_jisで開けない。
デフォルトが responseType: 'json' になっている
axiosのコードを見ると、responseTypeのデフォルト値が json になっているので、ダウンロードしたいファイルのタイプに合わせて設定を変更する必要がある。
// `responseType` indicates the type of data that the server will respond with // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' // browser only: 'blob' responseType: 'json', // default
ブラウザからダウンロードする場合は、
axios.get(downloadUrl),
null, // パラメータが不要ならnull
{ responseType: 'blob' }の設定が必要。
axios.request() を使えば、responseTypeの指定以外のパラメータも細く設定できるようなので、汎用性が高そう。
JavaScript heap out of memory
eslintを実行したところ、このようなJavaScriptのエラーが表示されました。
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Node.jsが使用可能なメモリ上限を超えたようなので、ヒープメモリサイズを増やす必要がありました。
現在のヒープサイズの上限を確認してみると、2048MBでした。
# node -e 'console.log(v8.getHeapStatistics().heap_size_limit/1024/1024)' # 2048
これではメモリ不足のようなので、ヒープサイズを大きくします。 毎回設定するのが面倒なので、.zhsrcに設定しておきます。
# vi ~/.zshrc で、ファイルを開いて export NODE_OPTIONS=--max-old-space-size=4096 を追加
これでeslintを再実行するとエラーが出なくなりました。