【发布时间】:2022-02-16 20:45:09
【问题描述】:
我是 express 的新手,当我创建一个简单的服务器演示时,我检测到没有发送 POST 请求。在做了一些实验之后,我发现它是 express.static 中间件,它以某种方式在干扰。我以为这是一个常见的错误,但没有设法找到线索。我的代码如下:
//jshint esversion:6
import express from "express";
import path from "path";
import { fileURLToPath } from "url";
import bodyParser from "body-parser";
import https from "https";
/* jshint ignore:start */
const __filename = fileURLToPath(import.meta.url);
/* jshint ignore:end */
const __dirname = path.dirname(__filename);
const app = express();
const port = 8080;
app.use(express.static(__dirname + "/public"));
app.use("/", bodyParser.urlencoded({ extended: true }));
app.get("/", (req, res) => {
res.sendFile(__dirname + "/index.html");
});
app.post("/", function (req, res) {
let name = req.body.name;
let email = req.body.email;
let message = req.body.message;
res.send("POST request to the homepage");
console.log(req.body);
});
app.listen(port, () => console.log(`Listening on port ${port}!`));
我很乐意感谢任何回答或评论 :)
编辑:显然这个错误不会出现在 Firefox 上,但会出现在 Chrome 和 Edge 上
【问题讨论】:
-
不应该
app.use(express.static(__dirname + "/public"));注册一些路由吗?或者至少毕竟/路线? -
express.static()对 POST 请求完全没有任何影响。它只关注 GET 请求。如果您希望我们能够帮助您,那么您需要更详细地描述您的问题。准确告诉我们正在向您的服务器发送什么 URL、什么 http 方法、您期望发生什么以及实际发生了什么。 -
@Anatoly 喜欢这个吗?:
app.use("/", express.static(__dirname + "/public"))。没用。无论如何,我认为如果未指定路径,它适用于所有请求 -
@Anatoly - 这不是必需的。
app.use(fn)与app.use("/", fn)完全相同。没有不同。app.use()匹配任何以与您传递的路径相同的路径开头的路径。由于所有路径都以"/"开头,因此与不传递路径相同。 -
@jfriend00 我有一个带有动作“/”的表单。工作正常(打印请求参数),但在添加
express.static()之后甚至没有收到请求。事实上,在查看开发工具后,它也没有发送