如何解决在 cloudinary 上上传的图像在 heroku 中不起作用
我在 node.js 应用程序中使用 multer 和 cloudinary 进行图像上传。当我处于开发模式时,它工作得很好,但在部署到 heroku 后,我在浏览器控制台中收到错误消息 服务器响应状态为 503(服务不可用)。当我检查 heroku 日志时,它显示为 at=error code=H12 desc="Request timeout" method=POST path="/api/users/upload/avatar" 我已经在 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" && ext !== ".jpeg" && 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})
}
}
解决方法
在 Heroku config vars 上设置 Cloudinary 环境变量(例如 process.env.CLOUD_NAME
)可能会有所帮助。
或者只是尝试添加 CLOUDINARY_URL
环境变量(可以在 Cloudinary 仪表板上找到),然后您就不需要在 cloudinary.config()
上显式声明它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。