在feathers.js中上传文件时出现错误500一般错误

问题描述

我在Feathersjs上发送上传文件的请求时,在Postman上收到此错误

  {
        "name": "GeneralError","message": "ENOENT: no such file or directory,open 'public/uploads/pic'","code": 500,"className": "general-error","data": {},"errors": {}
    }

我的uploads.service.js:

const {Uploads} = require('./uploads.class');
const createModel = require('../../models/uploads.model');
const hooks = require('./uploads.hooks');
const multer = require('multer');

const storage = multer.diskStorage({
  destination: (_req,_file,cb) => cb(null,'public/uploads'),// where the files are being stored
  filename: (_req,file,cb) => {
    console.log(_req.body);
    //cb(null,${_req.body.name});
    cb(null,`${_req.body.name}`); //
  },// getting the file name
});
const uploads = multer({
  storage,limits: {
    fieldSize: 1e8,fileSize: 1e7,},});

module.exports = function(app) {
  const options = {
    Model: createModel(app),paginate: app.get('paginate'),multi: true,};

  // Initialize our service with any options it requires
  app.use(
    '/uploads',uploads.array('files'),(req,_res,next) => {
      const {method} = req;
      if (method === 'POST' || method === 'PATCH') {
        console.log(req.files);
        console.log(req.body);
        req.feathers.files = req.body.files;
        const body = [];
        for (const file of req.files)
          body.push({
            name: req.body.name,newNameWithPath: file.path,});
        req.body = method === 'POST' ? body : body[0];
      }
      next();
    },new Uploads(options,app),);

  // Get our initialized service so that we can register hooks
  const service = app.service('uploads');

  service.hooks(hooks);
};

这是我的uploads.model.js:

module.exports = function(app) {
  const modelName = 'uploads';
  const mongooseClient = app.get('mongooseClient');
  const {Schema} = mongooseClient;
  const schema = new Schema(
    {
      name: {type: String,required: true},{
      timestamps: true,);

  // This is necessary to avoid model compilation errors in watch mode
  // see https://mongoosejs.com/docs/api/connection.html#connection_Connection-deleteModel
  if (mongooseClient.modelNames().includes(modelName)) {
    mongooseClient.deleteModel(modelName);
  }
  return mongooseClient.model(modelName,schema);
};

我真的不知道问题出在哪里。据我介绍,应该在我上传文件自动创建该文件夹。

我非常感谢您的帮助。预先谢谢你。

解决方法

这是我自己的错误。我自己在uploads文件夹中创建了public文件夹,现在可以使用了。