Загрузка изображений в облако не работает в heroku

#node.js #heroku #cloudinary #image-upload

Вопрос:

Я использую multer и cloudinary для загрузки изображений в node.js приложение. Когда я нахожусь в режиме разработки, он работает отлично, но после развертывания в heroku я получаю ошибку в консоли браузера, так как сервер ответил со статусом 503 (Служба недоступна). Когда я проверил журналы heroku, он показал, что at=код ошибки=H12 desc=»Тайм-аут запроса» метод=Путь к сообщению=»/api/пользователи/загрузка/аватар» Я уже добавил свои переменные среды в heroku. В чем может быть проблема?

Мой конфигурационный файл

 const {config,uploader } = require('cloudinary').v2

const cloudinaryConfig = (req,res,next) => {
  config({
  cloud_name: process.env.CLOUD_NAME,
  api_key: process.env.API_KEY,
  api_secret: process.env.API_SECRET,
  });
  next()
}
  module.exports ={cloudinaryConfig,uploader}
 

Файл Мультера

 const DatauriParser = require('datauri/parser');

const parser = new DatauriParser();

const storage = multer.memoryStorage();
const multerUploads = multer({ storage,fileFilter:(req,file,cb)=>{
  let ext = path.extname(file.originalname);
  if (ext !== ".jpg" amp;amp; ext !== ".jpeg" amp;amp; ext !== ".png") {
  cb(new Error("File type is not supported"), false);
  return;
  } cb(null,true)
} }).single('image');

const dataUri = req => parser.format(path.extname(req.file.originalname).toString(),req.file.buffer)


module.exports = {multerUploads,dataUri}
 

Мой контроллер загрузки

 const uploadImage = async(req,res)=>{
    const folder = req.path.split('/',3)[2]
    if(!req.file){
        throw new Error('Choose a picture to upload')
    }
     if(req.file){
         const file = dataUri(req).content
         const result = await uploader.upload(file,{
             folder:`MobiHub/${folder}`,
             width: 300,
             height:300,
             crop:'fill',
             gravity: "faces"
         })
         const image = result.secure_url
         res.json({image}) 
     }  
   
}
 

Ответ №1:

Может помочь настройка process.env.CLOUD_NAME переменных среды Cloudinary (например,) в параметрах конфигурации Heroku. Или просто попробуйте добавить переменную CLOUDINARY_URL среды (ее можно найти на панели мониторинга Cloudinary), тогда вам не нужно будет явно объявлять их cloudinary.config() .

Комментарии:

1. Я уже добавил переменные env в конфигурацию heroku

2. Привет, Ник, поскольку вы также разместили сообщение на форуме Cloudinary, мы можем продолжать помогать вам на этой платформе.