在 feathersjs 中上传文件时出现错误 500(一般错误)

Getting Error 500 (general-error) while uploading files in feathersjs

当我发送在 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);
};

我真的想不通到底是哪里出了问题。根据我的说法,当我上传文件时应该自动创建文件夹。

非常感谢您的帮助。提前谢谢你。

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