我正在使用Nodejs构建API,所有端点工作正常。 图片上传端点在本地正确发送了一个错误(无效令牌),但是上传到Heroku时我得到了
2020-07-29T21:54:56.564155+00:00 heroku[router]: sock=backend at=error code=H18 desc="Server Request Interrupted" method=POST path="/uploadImages" host=the-link-2.herokuapp.com request_id=f65939bb-bb18-428c-8aba-cb6869f06696 fwd="178.86.226.163" dyno=web.1 connect=30ms service=147ms status=503 bytes=277 protocol=https
因此,当令牌在本地无效时,我会正确收到错误,但实时API却无法提供503服务
这是图片上传文件
const express = require('express');
const router = express.Router();
const multer = require('multer');
const languages = require("../localization/language.json");
const validate = require('../utils/validateJWT');
const storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, './uploads/')
},
filename: function(req, file, cb){
cb(null, new Date().toISOString()+file.originalname)
}
});
const uploadsFilter = (req, file, cb) => {
if(file.mimetype ==='image/jpeg' ||file.mimetype ==='image/png' || file.mimetype ==='image/jpg'){
cb(null, true);
}else{
cb(null, false)
}
};
const upload = multer({ storage: storage, fileFilter: uploadsFilter }).single('images');
router.post("/uploadImages", async function uploadFile(req, res) {
let token = req.headers['token'];
let lang = req.headers['lang'];
let language = lang=='en'? lang :'ar';
console.log(lang)
let user = await validate.vlidateJWT(token);
try {
if(!user){
return res.status(406).json({error : languages[language].invaliedToken});
}
upload(req, res, (err)=> {
console.log(req.file)
if (!req.file) {
return res.status(500).send({ error: languages[language].imgUploadError});
}
res.send(req.file);
})}
catch{
return res.status(500).json({ error:languages[language].error500});
}
});
module.exports = router;
至少有一种方法可以为错误503添加if语句以显示我想要显示的错误吗?
注意:图片上传正常,但身份验证无效。