Multer google storage возвращает «Внутреннюю ошибку сервера»

#file-upload #multer #mern

Вопрос:

Я только что переключил загрузку изображений с помощью Multer с локального на облачное хранилище Google, используя «multer-google-хранилище». Раньше он работал нормально, но теперь отправляет 500 внутренних ошибок сервера без сообщения. Я использую Nodejs и Express, реагирую для интерфейса. FormData отформатирована правильно, так как она отлично работает, если я вернусь в локальное хранилище. Есть идеи, как это исправить? Или отобразить сообщение об ошибке? Я не могу найти много документации по «многомерному хранилищу Google». Спасибо за помощь!

Здесь внутренний почтовый маршрут (я скрыл параметры конфигурации)

 const multer = require('multer');
const multerGoogleStorage = require('multer-google-storage');

const upload = multer({
    storage: multerGoogleStorage.storageEngine({
        autoRetry: true,
        bucket: '******',
        projectId: '******',
        keyFilename: '../server/config/key.json',
        filename: (req, file, callback) => {
            callback(null, file.originalname);
        },
    }),
});




//@route        POST api/listings
//@description  Create listing
//@access       Private
router.post(
    '/',
    upload.any(),

    [
        isLoggedIn,
        [
            check('title', 'Title is required').not().isEmpty(),
            check('coordinates').not().isEmpty(),
            check('address').not().isEmpty(),
            check('price', 'Set a price').not().isEmpty(),
            check('description', 'Type a description').not().isEmpty(),
            check('condition', 'Declare the condition').not().isEmpty(),
            check('category', 'Please select a category').not().isEmpty(),
        ],
    ],

    async (req, res) => {
        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            console.log('validation error');
            return res.status(400).json({ errors: errors.array() });
        }
        try {
            const files = req.files;
            let images = [];

            for (let image of files) {
                images.push(image.originalname);
            }

            const newListing = new Listing({
                title: req.body.title,
                images: images,
                coordinates: JSON.parse(req.body.coordinates),
                price: req.body.price,
                description: req.body.description,
                condition: req.body.condition,
                dimensions: req.body.dimensions,
                quantity: req.body.quantity,
                address: req.body.address,
                author: req.user.id,
                category: JSON.parse(req.body.category),
            });

            const author = await User.findById(req.user.id);
            await author.listings.push(newListing);

            await author.save();
            const listing = await newListing.save();

            res.json(listing);
        } catch (error) {
            console.log('error');
            console.error(error);
            res.json(error);
            res.status(500).send('Server Error');
        }
    }
);

 

Ответ №1:

Я решил проблему, это была проблема с разрешением. В моем предыдущем ведре облачного хранилища Google контроль доступа был «Равномерным», в то время как он должен был быть «мелкозернистым».