/で書かれたアプリケーションでアップロードされた画像のサイズを変更するためにsharpを使用しています。サイズ変更が成功したら、元のファイルを削除したいと思います。入力画像の場合、操作は正常に終了し、サイズ変更された画像があり、元の画像は削除されます。およびイメージの場合、サイズ変更は成功しますが、コマンドは次のエラーで失敗します。Node.js
Express
Typescript
png
gif
jpg
tif
unlink
EBUSY: リソースがビジーまたはロックされています。リンク解除 '...'
sharp().resize()
サイズ変更操作が完了した後でも、入力ファイルをロックしたままにするかのように。
説明した動作をテストするコードは次のとおりです。
import { existsSync, unlinkSync } from "fs";
import { normalize, parse } from "path";
var argv = require("yargs").argv;
var sharp = require("sharp");
var appRoot = require("app-root-path") + "/";
let resizeTest = async function (filename: string): Promise<boolean> {
try {
let nameParts = parse(filename);
let source = appRoot + filename;
let destination = appRoot + nameParts.name + "_resized" + nameParts.ext;
let fileExists = await existsSync(source);
if (!fileExists) {
console.log("Input file not found. Exiting.");
return false;
}
let resizeResult = await sharp(source)
.resize(128, 128)
.toFile(destination);
console.log("Resize operation terminated: ", resizeResult);
await unlinkSync(source);
console.log("unlinkSync operation terminated.");
return true;
} catch (error) {
console.log("An error occured during resizeTest execution: ", error.message);
return false;
}
}
if (argv._.length === 0) {
console.log("Usage: node sharptest.js FILENAME");
} else {
let resizeResult: Promise<boolean> = resizeTest(argv._[0]);
resizeResult.then(result => console.log("Returning from execution with ", result));
}
私は何が欠けていますか?