快速路线不呈现

Express routes not rendering

我不明白为什么我的路线“抓取”不会呈现。我已经尝试了所有我能想到的方法,甚至将所有内容都更改为非常基本的路线,但我还是无法正常工作。

app.js

const indexRoute = require("./routes/index");
const scrapeRoute = require("./routes/scrape");

// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));

app.use(logger("dev"));

// Routes
app.use("/", indexRoute);
app.use("/scrape", scrapeRoute);

module.exports = app;

这是路线:

const express = require("express");
const router = express.Router();

router.post("/", (req, res) => {
    res.send(req.body);
});

module.exports = router;

索引路由工作得很好。由于某种原因,路线 'scrape' 将无法正常工作。我有在那里抓取网站的逻辑,但当它不起作用时,我想我会把它改成一条基本路线,看看我是否能得到任何东西,现在它只是在我去 localhost:9000/刮

您确定您正在从客户端拨打 post 电话吗?

如果您只是要在浏览器中 http://localhost:9000/scrape,那么这是一个 GET 请求,而不是 POST 请求。而且,您需要:

const express = require("express");
const router = express.Router();

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

module.exports = router;

要从中获得响应 - 更改为 router.get()。而且,因为它是一个 GET 请求,所以没有正文,所以 req.body 对于 GET 请求来说可以预见是空的。


要从浏览器发送 POST 请求,您需要让浏览器提交一个带有 method="POST"action="/scrape" 作为 <form> 标签属性的表单或者您需要使用 Ajax 通过 fetch() 接口或 XMLHttpRequest 接口以编程方式从 Javascript 发送 POST 请求。