我也提到了关于stackoverflow的几个答案,但仍然无法正常工作。当我在带有功能的app.js中使用app.post函数时,它可以工作,但是当我在其中放置路由时,它就不起作用,邮递员说不能发布。 1天前工作正常。
这是app.js的代码
let express=require("express");
let app=express();
let signuproute=require("./routes/signup");
app.listen(3000,function(req,res){
console.log("server started");
});
app.get("/",function(req,res){
console.log("home page called");
res.send({message:"Thanks for calling home page"});
});
app.post("/signup",signuproute);
上面的注册路线不起作用,但是当我像这样直接传递函数时
app.post("/signup",function(req,res){ console.log("signed up"); });
它打印在控制台上签名的内容。那么,为什么路由不起作用。
这是我的注册路线signup.js:
let express=require('express');
let router=express.Router();
console.log("Signup called");
router.get("/",function(req,res){
});
router.post("/",function(req,res,next){
res.send({message:"thank you for signing up"});
});
module.exports=router;
答案 0 :(得分:1)
问题是您已经在routes/signup.js
文件中定义了路由后处理程序。因此,写app.post(router.post(function (req, res, next) {})
是没有意义的。
您必须使用in express.JS API references所述的app.use
函数。
将app.use('/signup', signupRoute)
视为通用注册功能的/signup
名称空间。例如,将来您可能希望通过/user/create
这样的app.use('/user/create', signupRoute)
路由重用SignUp功能。
这是您的示例的外观:
let express = require("express");
let app = express();
let signupRoute = require("./routes/signup");
app.listen(3000, function(req, res) {
console.log("server started");
});
app.get("/",function(req,res){
console.log("home page called");
res.send({message:"Thanks for calling home page"});
});
app.use("/signup",signupRoute);
答案 1 :(得分:0)
在两种情况下,app.post ('/signup')
和app.get ('/')
都使用app.use ('/signup')
和app.use ('/home')
当您使用单独的路由文件进行注册路由时,请同时使用一个路由文件进行本地路由。
let express=require("express");
let app=express();
let signuproute = require("./routes/signup");
let homePageRoute = require("./routes/homePageRoute"); // define a home page route
app.listen(3000,function(req,res){
console.log("server started");
});
app.use("/signup", signuproute);
app.use("/home", homePageRoute); // use created home page route
答案 2 :(得分:0)
router.post已经包含一个post方法,在这种情况下,请使用app.post代替app.use方法。
app.use('/signup',signuproute);
Signup路由包含您在signup.js中编写的任何方法,都可以在/ signup路由中访问。