renameSync
- синхронная версия rename
. Он не принимает обратный вызов в качестве аргумента; он принимает только oldpath и newpath . Если вы передадите третий аргумент, он будет проигнорирован; передаваемая вами функция обратного вызова никогда не вызывается.
Если вы хотите, чтобы она основывалась на обратном вызове, вместо этого используйте fs.rename
, который делает обратным вызовом.
Ваш resolve
также вне обратного вызова в тот момент, когда он должен быть внутри:
async uploadAsset(assetName, file) {
const { app } = this;
const logger = this.logger;
return new Promise(function(resolve, reject) {
fs.rename(file.filepath, `${app.config.multipart.projectAssetLocalPath}${assetName}`, err => {
if (err) {
logger.warn(err);
reject();
}
resolve();
});
});
}
Или используйте вместо него fs.promises
, чтобы выполнить sh, не создавая Обещай себя.
async uploadAsset(assetName, file) {
const { app } = this;
const logger = this.logger;
return fs.promises.rename(file.filepath, `${app.config.multipart.projectAssetLocalPath}${assetName}`)
.catch((err) => {
logger.warn(err);
throw new Error(err);
});
}