我发现我的问题是一年前在这里app.post() not working with Express提出的,但是在那里写的代码已经过时了(添加bodyparser的方式不再起作用,而且下面提到的功能也行不通),而且提问者从未选择答案所以这个问题从未解决。
这是我的代码
const express = require("express");
const db = require("mysql");
const app = express();
const bodyParser = require("body-parser");
const multer = require("multer"); // v1.0.5
const upload = multer(); // for parsing multipart/form-data
const http = require("http");
const path = require("path");
app.set("view engine", "jade");
app.set("views", path.join(__dirname));
console.log("before");
app.listen(8000, () => {
console.log("Server started!");
console.log("within");
});
console.log("after");
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.post("/", function(req, res) {
console.log("hit here in post");
res.render("index.jade", {});
console.log("hit here in post");
res.json({ name: "John" });
res.status(500).json({ error: "message" });
res.end();
});
app.get("/", function(req, res) {
res.render("index.jade", {});
console.log("hit here in get");
console.log(req.body);
});
这是输出。
before
after
Server started!
within
hit here in get
{}
我什至试图像其他问题一样,将应用程序集和应用程序包装在app.configure中,以查看是否是问题所在,但是由于我遇到了错误,所以配置函数似乎不再存在。
我也应该注意。我在这里的路线是正确的。我还没有制作Views子文件夹,所以这就是为什么要原样编写它。
更新
我想我可能已经发现了这个问题,但是我不明白为什么会这样。在浏览器的“网络”标签中,我看到由于favicon.ico请求而导致GET错误404,但我不知道该请求来自何处。我已经看到了serve-favicon npm模块来支持它,但是不想添加,因为我从未打算将favicon图像添加到服务器中。我什至不知道那将如何工作。
回复詹姆斯的最新评论 启动中间件后配置中间件是什么意思?您是指在开始侦听端口后编写post方法的事实吗?另外,如果这就是为什么post不执行的原因,不管如何get方法如何执行?除了当前我已注释掉的代码外,我没有保留任何服务器代码,但是我发布的代码是我的主要index.js文件,这是我从标准npm init项目中修改的唯一文件。我没有设置任何路由,因为我看不到需要这样做(即使我添加react时,因为我的项目在reactjs,nodejs和数据库之间的通信概念都很简单,“因此而感到沮丧”),这就是为什么试图让获取和发布仅访问根目录。
答案 0 :(得分:0)
favicon由浏览器自动请求。它是浏览器标签或网址栏中的图标
在app.get()之前添加此内容:
app.all('/', function(req, res, next) {
console.log({method: req.method, url: req.url});
next();
});