node.js - nodejs post方法没有被调用
问题描述
我发现我的问题是一年前在这里提出的app.post() 不适用于 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 中,以查看这是否是问题所在,但该配置功能似乎不再存在,因为我收到了一个错误。
我也应该注意。我这里的路由是正确的。我还没有创建视图子文件夹,所以这就是我按原样编写它的原因。
更新
我想我可能已经发现了这个问题,但我不明白它为什么会发生。在浏览器的网络选项卡中,我看到 GET 由于 favicon.ico 请求而出现 404 错误,但我不明白该请求来自何处。我已经看到 serve-favicon npm 模块来支持它,但不想添加,因为我从未打算将 favicon 图像添加到我的服务器。我什至不明白那将如何工作。
回复 James 的最后一条评论, 我在启动后配置中间件是什么意思?您是指 post 方法是在端口侦听开始后编写的吗?另外,如果这就是 post 不执行的原因,那么 get 方法怎么会执行呢?除了我目前已经注释掉的代码之外,我不会保留任何服务器代码,但我发布的代码是我的主要 index.js 文件,它是我从标准 npm init 项目修改的唯一文件。我没有设置任何路由,因为我认为没有必要这样做(即使我添加了 react,因为我的项目在 reactjs、nodejs 和数据库之间的通信概念上很简单,“因此我很沮丧”)这就是为什么我'我试图让 get 和 post 只访问根目录。
解决方案
favicon 由浏览器自动请求。它是浏览器选项卡或 url 地址栏中使用的图标
在 app.get() 之前添加这个:
app.all('/', function(req, res, next) {
console.log({method: req.method, url: req.url});
next();
});
推荐阅读
- node.js - 在 node.js 应用程序中启动时找不到绑定文件
- c++ - 为什么我的代码没有完成 Sound::release() 调用?
- vhdl - 如何在模拟开始时修复“内部编译器错误”
- json - InfluxDB API 查询请求返回 html 而不是 JSON 响应
- java - Hibernate-OGM-MongoDB:如何在启动时创建/更新集合?
- docker - Ubuntu 将 docker 卷挂载到系统中
- javascript - 语义 UI toast 通知重叠问题
- javascript - vue.js:带有自托管(本地)视频文件的英雄背景视频
- dart - 如何改变showMenu下PopupMenuItem的背景颜色?
- python - 在 rply 中解析 IF 和 IF-ELSE 语句