#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, мы можем продолжать помогать вам на этой платформе.