грозный дескриптор без ошибок загруженного файла - PullRequest
0 голосов
/ 12 ноября 2018

В моем коде все работает как положено, кроме того, что если пользователь не загрузил файл, это приводит к сбою приложения моего узла.

Ошибка возникает в части fs.rename, так как ничего не загружено, приложение не может ничего переименовать и вызывает следующее:

Ошибка:

EPERM: операция не разрешена, переименуйте 'C: \ Users \ xxx \ AppData \ Local \ Temp \ upload_0a145049089fa69e9df64f8d20abb362' -> 'C: \ Users \ xxx \ Dropbox \ Automate NodeJS \ Login_Register + Submit - 0,01 \ data \ 5be13231b34aaf \ sdS9m '

Я испытываю трудности с поиском ошибки и способов ее устранения. Если кто-нибудь подскажет мне некоторые ресурсы о том, как обрабатывать огромные ошибки и как остановить процесс, пользователь ничего не загрузил, это было бы замечательно.

Это не производственное приложение или что-то в этом роде, просто я учусь работать с несколькими функциями и базой данных одновременно.

router.post('/submit', userisSubbed, userhasTime, (req, res, next0) => {
var userId = req.user._id;
var username = req.user.email;
var isCompleted = 'No'
var jobNumber = generator.generate({
    length: 5,
    numbers: true
});
// Validate
const errors = req.validationErrors();

if (errors) {
    res.render('index', {
        errors: errors
    });}    

    else {
        var form = new formidable.IncomingForm();
        form.parse(req, function (err, fields, files) {
        var userPath = req.user._id
        var dir = './data/' + userPath + '/' + jobNumber + '/';
        if (!fs.existsSync(dir)){
            fs.mkdirSync(dir);

          }else
          {
              console.log("Directory already exist");
        }

        var oldpath = files.filetoupload.path;
        var newpath = dir + files.filetoupload.name;
        // copy the file to a new location
        fs.rename(oldpath, newpath, function (err) {
            if (err) throw err;
            console.log('renamed complete');
        const newJob = new Job({
            userId: userId,
            username: username,
            isCompleted: isCompleted,
            filepath: newpath,
            jobNumber: jobNumber,
        });
        Job.createJob(newJob, function(err, job){
            if (err) throw err;
            console.log(job);
        });
    req.flash('success_msg', 'Job Submitted...');
    res.redirect('/')
     });
  });
 }
});
...