javascript - Express 路由器将 style.css 作为 reqeuest.params 传递,并且可能调用路由两次?
问题描述
我正在使用 node.js、MySql、Express 和 Pug 创建一个鸡尾酒网站和数据库。
我最近尝试使用路由参数,以便不同的鸡尾酒有不同的 URL,而不是通过 get 传递名称。所以 URL 应该是“localhost:3000/cocktail/Cosmopolitan”而不是“localhost:3000/cocktail?name=Cosmopolitan”。问题是我的 get 路线似乎被调用了两次。一次使用正确的参数“Cosmopolitan”,然后再次使用参数“style.css”,这导致站点显示没有任何样式,并且输出中的 TypeError 进一步下降。
我的鸡尾酒路线目前看起来像这样:
const Router = require('express-promise-router');
const db_func = require("../database/db_functions");
const router = new Router();
router.get("/:name", async (req, res) => {
var name = req.params.name;
console.log(req.params);
const cocktail = await db_func.getCocktail(name);
const ingredients = await db_func.getIngredientById(cocktail["id"]);
console.log(ingredients);
await res.render('cocktail', {
cocktail: cocktail,
ingredients: ingredients
});
});
module.exports = router;
现在的问题是这个输出
{ name: 'Cosmopolitan' }
[
RowDataPacket { name: 'Wodka', amount: 5, measure: 'cl', garnish: 0 },
RowDataPacket {
name: 'Limettensaft',
amount: 2,
measure: 'cl',
garnish: 0
},
RowDataPacket {
name: 'Cointreau',
amount: 2,
measure: 'cl',
garnish: 0
},
RowDataPacket {
name: 'Cranberrynektar',
amount: 2,
measure: 'cl',
garnish: 0
}
]
{ name: 'style.css' }
TypeError: Cannot read property 'id' of undefined
at F:\Arbeit und Studium\Projects\Cocktail Database\Cocktail Node\routes\cocktail.js:10:65
at processTicksAndRejections (internal/process/task_queues.js:97:5)
对应的 pug 文件。鸡尾酒.pug:
extends layouts/layout
block content
h4.random-title #{cocktail.name}
p Served in a #{cocktail.glass} Glass!
div.ingredient-list
- for (var i = 0; i < ingredients.length; i++)
p - #{ingredients[i].amount} #{ingredients[i].measure} #{ingredients[i].name}
p Recipe by: #{cocktail.author}
和 layouts/layout.pug
doctype html
html
head
title Cocktailbar
link(rel="stylesheet" type="text/css" href="style.css")
body
div.page-container
...
我会很感激任何意见!
解决方案
好的,克里斯建议的问题是我的 style.css 位于 public/style.css 而不是单独的文件夹中。
此外,我将样式表链接到 style.css 而不是 /style.css,或者更好的是 /css/style.css,从而访问 localhost:3000/cocktail/style.css 上的网站并触发我的路线。
推荐阅读
- azure-data-factory-2 - Azure 数据工厂管道中的流追赶
- python - Python 中的 read() 和 read1() 有什么区别?
- elixir - 在不将服务器加载到极限的情况下生成巨大的报告
- html - 为什么当我在 css 上为按钮添加边距和宽度时会出现这种行为?
- npm - 无法使用 npm 全局安装软件包
- c# - 我如何获得一个类名变量
- github - 如何忽略整个应用程序中的扩展文件,除了特定文件夹
- android - EVP_CipherInit_ex 在未使用时崩溃,在解密密码时
- javascript - XMLHttpRequest onreadystatechange 在 Firefox 上不起作用
- java - Direct conversion from Collection
to LongStream