У меня есть приложение, которое загружает файл на сервер через axios.post и multer. Все идет хорошо, и загрузка файлов успешно, но когда я переключаю axios на async / await, он зависает, чтобы запустить M.toast или любой другой код после него.
Я пытался решить эту проблему, возвращая что-то с сервера, ноэто не помогло.
const handleUploadFile = async (e) => {
const data = new FormData()
data.append('file', e.target.files[0])
data.append('name', 'Reservations file')
data.append('description', 'This is a file with new reservations')
try {
// Problem 1 - if you use AWAIT for axios it will never launch code after it.
await axios.post('/files/', data)
M.toast({html: "Notification"}) // doesn't work with await, otherwise - ok
} catch(err) {
console.log(err)
}
}
Все идет так, как должно быть, до того момента, пока вы не переключите функцию на асинхронное / ожидание.
Server.js
const express = require('express')
const multer = require('multer')
const path = require('path')
const app = express()
app.use('/files', require('./routes/files'))
const PORT = process.env.PORT || 5000
app.listen(PORT, () => console.log(`Server started on port ${PORT}`))
маршруты / файлы.js
const express = require('express')
const router = express.Router()
const multer = require('multer')
const storage = multer.diskStorage({
destination: './files/',
filename(req, file, cb) {
cb(null, `${new Date().toISOString().replace(/:/g, '-')}-${file.originalname}`);
},
});
const upload = multer({ storage });
router.post('/', upload.single('file'), (req, res) => {
console.log(res)
});
module.exports = router