为什么 next() 是 unreachable function end of try catch

问题描述 投票:0回答:0

列表项

enter image description here
我在 product.routes.js 中创建了 uploadProduct 路由,并在 index.js 文件中调用了它。 产品.routes.js:

const express= require("express");
const uploadProduct = require("../controllers/product.controller");
const ProductValidation = require("../middlewares/validation/product.validation");
const router = express.Router()
router.post("/uploadProduct",ProductValidation.addProduct,uploadProduct)
module.exports = router

index.js:

const router = require("express").Router()
const product = require("./product.routes")
router.use(product)
module.exports = router

这就是问题发生的地方

product.validation.js:

const joi = require("joi");
const APIError = require("../../utils/errors");
const Response = require("../../utils/response");
class ProductValidation {
  constructor() {}
  static addProduct = async (req, res, next) => {
    const schema = await joi.object({
      ProductName: joi.string().required().max(45).min(1),
      NumberOfProducts: joi.number().required().max(45).min(1),
      UnitOfMeasurment: joi.string().required().max(45).min(1),
      PurchasePrice: joi.number().required(),
      SellingPrice: joi.number().required(),
      QRcode: joi.string().required().max(45).min(1),
      //   İmage: joi.string().required().max(45).min(1),
    });
    try {
      const value = await schema.validateAsync(req.body);
      return new Response(value, "success").created(res);
    } catch (error) {
      if (error.details && error?.details[0].message)
        throw new APIError(error.details[0].message, 400);
      else throw new APIError("Please comply with validation rules", 400);
    }
    next();

  };
}
module.exports = ProductValidation;

它是 uploadProduct 路由的中间件。为什么我不能在 try catch 结束时使用 next () 函数。

我可以在 try catch 返回之前使用 next() 函数,但我不能在 try catch 结束时使用这个函数。为什么?trycatch 块返回会影响下一个代码吗?因为这个文件中 trycatch 之后的任何代码都是意外代码!

谢谢:)

javascript node.js express return try-catch
© www.soinside.com 2019 - 2024. All rights reserved.