我正在构建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
我不认为问题出在我的代码上,因为除最后一条以外的其他路由都在工作。
答案 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} ));
});