Я хочу сделать загрузку файла на Node но у меня постоянно вылазят ошибки, подскажите пож как сделать

Рейтинг: 0Ответов: 1Опубликовано: 06.04.2023
const config = require('../uploads')
const fs = require('fs')
const path = require('path');


class FilesController {
    
    async create(req, res) {
        try {
            const file = req.files.file

            let path;
            path = path.join(__dirname, '..', 'uploads', file.name);

            if (fs.existsSync(path)) {
                return res.status(400).json({message: 'File already exist'})
            }
            file.mv(path)

           
            res.json(file.name)
        } catch (e) {
            console.log(e)
            return res.status(500).json({message: "Upload error"})
        }
    }
}

module.exports = new FilesController() 

Скрин ошибки https://prnt.sc/jIso2TlHV--6 Скрин роутера и папки uploads https://prnt.sc/fbZEN1Z0OzLm

https://prnt.sc/jIso2TlHV--6

[nodemon] starting `node index.js`
node:internal/modules/cjs/loader:998
  throw err;
  ^

Error: Cannot find module '../uploads'
Require stack:
- C:\Users\User\prog projects\test task dzen\server\controllers\FilesController.js
- C:\Users\User\prog projects\test task dzen\server\routes\filesRouter.js
- C:\Users\User\prog projects\test task dzen\server\routes\index.js
- C:\Users\User\prog projects\test task dzen\server\index.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
    at Module._load (node:internal/modules/cjs/loader:841:27)
    at Module.require (node:internal/modules/cjs/loader:1061:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (C:\Users\User\prog projects\test task dzen\server\controllers\FilesController.js:1:16)
    at Module._compile (node:internal/modules/cjs/loader:1159:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
    at Module.load (node:internal/modules/cjs/loader:1037:32)
    at Module._load (node:internal/modules/cjs/loader:878:12)
    at Module.require (node:internal/modules/cjs/loader:1061:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\User\\prog projects\\test task dzen\\server\\controllers\\FilesController.js',
    'C:\\Users\\User\\prog projects\\test task dzen\\server\\routes\\filesRouter.js',
    'C:\\Users\\User\\prog projects\\test task dzen\\server\\routes\\index.js',
    'C:\\Users\\User\\prog projects\\test task dzen\\server\\index.js'
  ]
}

Ответы

▲ 0

после изменения таким образом ошибка пропала, но теперь при отправке файла с ключем file возвращается пустой массив и картинка не сохраняется

const fs = require('fs')
const path = require('path');
const uid = require('uid');

const uploadDir = '../uploads'

class FilesController {
    
    async create(req, res) {
        try {
            const file = req.files.file

            /*let path;
            path = path.join(__dirname, '../', 'uploads', file.name);

            if (fs.existsSync(path)) {
                return res.status(400).json({message: 'File already exist'})
            }*/
            const uniqueFileName = uid(10);
            file.mv(path.join(uploadDir, uniqueFileName + ".png"))
            

            
           
            res.json(file.name)
        } catch (e) {
            console.log(e)
            return res.status(500).json(e)
        }
    }
}

module.exports = new FilesController()````