Как разрешить запрос сущности слишком большую ошибку в feathersjs?

1

Я загружаю файл csv в службу перьев, а размер файла - 203kb, он выдает объект запроса ошибки слишком большой ошибкой, что-то вроде этого.

ошибка:

{
    "name": "GeneralError",
    "message": "request entity too large",
    "code": 500,
    "className": "general-error",
    "data": {},
    "errors": {}
}

Я пишу код среднего уровня, что-то вроде этого, но я не могу решить

app.js:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

location.service.js:

// Initializes the 'location' service on path '/location'
const createService = require('feathers-mongoose');
const createModel = require('../../models/location.model');
const hooks = require('./location.hooks');
const filters = require('./location.filters');
const multer = require('multer');
const multipartMiddleware = multer();

module.exports = function () {
  const app = this;
  const Model = createModel(app);
  const paginate = app.get('paginate');

  const options = {
    name: 'location',
    Model,
    paginate
  };

  // Initialize our service with any options it requires
  app.use('/location',
      multipartMiddleware.single('uri'),
        (req, res, next) => {
            req.feathers.file = req.file;
            next();
        },
    createService(options)
  );

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

  service.hooks(hooks);

  if (service.filter) {
    service.filter(filters);
  }
};

location.hooks.js:

const { authenticate } = require('feathers-authentication').hooks;

module.exports = {
  before: {
    all: [ authenticate('jwt') ],
    find: [],
    get: [],
    create: [function(hook, next){

        var tHeader = Object.keys(hook.data)[0].split('\n')[0].replace(/\r?\n|\r/g, " ").split(',');
        var s = Object.keys(hook.data)[0].split('\n');
            s.shift();
        var tBody = s.map(d=> d.replace(/\r?\n|\r/g, " ").split(','));
        var jointObj = [];

        const mergeArrToJSON = (a, b) => a
            .map((item, i) => ({[item.replace(/\s+/g,'')]: b[i]}))
            .reduce((json,val)=>Object.assign({},json,val));

        tBody.forEach(p1=>{
            var a = tHeader, b = p1;
            jointObj.push(mergeArrToJSON(a,b))
        })

        var insertObj = [];
        jointObj.pop()
        jointObj.forEach(d=>{
            var Obj = {};
            for(k in d) {
                var f = /[/]/;
                if(f.test(k) == true){
                    var s = k.split('/');
                    if(Obj.hasOwnProperty(s[0]) !== true){
                        Obj[s[0]] = {[s[1].charAt(0).toLowerCase() + s[1].slice(1)]:d[k]};
                    } else {
                        Obj[s[0]][s[1].replace(/\s+/g,'')] = d[k].replace(/\s+/g,'');
                    }
                } else {
                    Obj[k] = d[k];
                }
            }
            insertObj.push(Obj)
        });

        hook.data = insertObj;
        next();
    }],
    update: [],
    patch: [],
    remove: []
  },

  after: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};

я использую почтальон для загрузки файла csv

Изображение 174551

Теги:
csv
feathersjs

2 ответа

3
Лучший ответ

У меня есть код изменения в файле app.js

до:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

после:

app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({
  limit: '100mb',
  extended: true
}));
  • 1
    Примечание: в более поздних приложениях feathersjs строки для обновления в app.js заканчиваются чтением, например, app.use(express.json({ limit: '100mb' })); и app.use(express.urlencoded({ limit: '100mb', extended: true }));
2

У меня была такая же проблема в моем приложении Node/express, я использовал это, и он исправил эту проблему для меня, надеюсь, это сработает и для вас:

app.use(bodyParser.json({limit:1024102420, type:'application/json'}));

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

  • 0
    это не работает в Fearsjs @ Эмад Dehnavi
  • 0
    Я объявил два раза выше содержание, вот что это не работает, теперь я идентифицировал и удалил @ Emad Dehnavi

Ещё вопросы

Сообщество Overcoder
Наверх
Меню