TypeScriptでサーバーからファイルをダウンロードして、ローカルに保存するサンプルコード。
imagesディレクトリを作成して、ファイルを保存します。
ダウンロードするファイルと保存するファイルのファイル名は、download()関数の引数で設定します。
事前準備
npm install node-fetch --save
npm install @types/node-fetch --save
ソースコード
import * as fs from "fs";
import * as path from "path";
import fetch from "node-fetch";
// ダウンロードしたファイルを保存するディレクトリ
const download_dir = path.join(process.cwd(), "images");
// ディレクトリがなければ作成する
if (!fs.existsSync(download_dir)) {
fs.mkdirSync(download_dir);
}
/**
* URLを受け取り、該当するファイルをダウンロードして保存する
* @param url ダウンロードするファイルのURL
* @param filename 保存するファイルのファイル名
*/
function download(url: string, filename: string) {
fetch(url, { method: "GET" }).then((response) => {
console.log(`OK: ${filename}`);
response.body.pipe(fs.createWriteStream(filename));
}).catch((error) => console.log(`error:${url} ${error}`));
};
download(
"http://~/example.jpg",
path.join(download_dir, "sample.jpg"));
試してみるとこのエラーが発生しています。
解決方法が分かる場合は、教えていただけますでしょうか。
node:zlib – Error: Module build failed: UnhandledSchemeError: Reading from “node:zlib” is not handled by plugins (Unhandled scheme).