#javascript #node.js
Вопрос:
Я пытаюсь создать загрузчик файлов с помощью nodejs. когда я пытаюсь протестировать его после загрузки файла в postman, я получаю сообщение об ошибке ниже.
(узел:9992) Предупреждение о необработанном запросе: Ошибка проверки: ошибка проверки файла: uuid: Не удалось привести к номеру для значения «dc1c9e3c-2931-480a-87cf-c4c7ffd748df» (строка типа) по пути «uuid» в модели.Документ.признать недействительным (C:UsersWin10filesendernode_modulesmongooselibdocument.js:2879:32) в наборе model.$(C:UsersWin10filesendernode_modulesmongooselibdocument.js:1426:12) в наборе model.$(C:UsersWin10filesendernode_modulesmongooselibdocument.js:1128:16) у модели.Документ (C:UsersWin10filesendernode_modulesmongooselibdocument.js:148:12) у модели.модель (C:UsersWin10filesendernode_modulesmongooselibmodel.js:106:12) на новой модели (C:UsersWin10filesendernode_modulesmongooselibmodel.js:4751:15) в C:UsersWin10filesenderrouterfiles.js:30:23 по крайней мере, немедленно. (C:UsersWin10filesendernode_modulesmulterlibmake-middleware.js:53:37) в процессе выполнения (внутренний/таймеры.js:464:21) (Используйте
node --trace-warnings ...
чтобы показать, где было создано предупреждение) (узел:9992) Предупреждение о необработанном обещании: Необработанное обещание отклонено. Эта ошибка возникла либо в результате включения асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch(). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI--unhandled-rejections=strict
(см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1) (узел:9992) [DEP0018] Предупреждение об отклонении: Необработанные отклонения обещаний считаются устаревшими. В будущем отказы в обещаниях, которые не будут обработаны, приведут к прекращению Node.js процесс с ненулевым кодом выхода.
Мой files.js
const router = require('express').Router();
const multer = require('multer');
const File = require('../model/model');
const path = require('path');
const { v4: uuidv4 } = require('uuid');
let storage=multer.diskStorage({
destination:(req,file,cb)=>cb(null,'uploads/'),
filename:(req,file,cb)=>{
//const uniquename =`${Date.now()}-${Math.round(Math.random()* 1E9)} ${(file.originalname)}`;
const uniquename = `${Date.now()}-${Math.round(Math.random() * 1E9)}${path.extname(file.originalname)}`;
cb(null,uniquename);
}
})
let upload = multer({
storage,
limit: {fileSize:1000000 * 1000}
}).single('myfile')
router.post('/', (req,res)=>{
// store file
upload(req,res,async (e)=>{
if(!req.file) res.json("file is mandatory");
if(e){
res.status(500).json({error:e.message});
}
const file = new File({
filename:req.file.filename,
uuid:uuidv4(),
path:req.file.path,
size:req.file.size
});
const response= await file.save();
res.json(`${process.env.APP_BASE_URL}/file/${response.uuid}`);
})
})
module.exports = router;
Здесь я могу видеть, когда я отправил почтовый запрос от почтальона, файл загружается в папку «загрузки». Но вместо того, чтобы дать этот URL (${process.env.APP_BASE_URL}/file/${response.uuid}) в качестве ответа я получаю ошибку выше. Заранее благодарю..