节点,Express,404错误/无法获取路由

时间:2020-05-29 11:36:49

标签: javascript node.js express

我正在构建Express应用程序,并且在路由方面遇到一些问题。除了一条,我所有的路线都工作正常。

我有一个有效的路由/管理员/产品:

const router = express.Router();

router.get("/admin/products", (req, res) => {
    res.send(productsIndexTemplate({ products }));
});

另一种可行的途径/ admin / products / new:

router.get("/admin/products/new", requireAuth, (req, res) => {
    res.send(productsNewTemplate({}))
});

但此路线无效:

router.get('/admin/products/:id/edit'), async (req, res) => { 
    const product = await productsRepo.getOne(req.params.id);
    res.send(productsEditTemplate( {product} ));
};

我获得了正确的URL(这意味着我在url中获得了正确的ID,因此req.params.id不是未定义或为null,但我收到此消息:

Cannot GET /admin/products/08a4dc4f/edit

我不认为问题出在我的代码上,因为除最后一条以外的其他路由都在工作。

1 个答案:

答案 0 :(得分:1)

您在路线中添加了括号(右括号)。

router.get('/admin/products/:id/edit'), async (req, res) => { //<---- Your error is in this line. After edit you added closing bracket.
    const product = await productsRepo.getOne(req.params.id);
    res.send(productsEditTemplate( {product} ));
};

替换为以下代码。

router.get('/admin/products/:id/edit', async (req, res) => { 
    const product = await productsRepo.getOne(req.params.id);
    res.send(productsEditTemplate( {product} ));
});