2

我在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;
4

3 回答 3

1

问题是您已经在文件中定义了一个后路由处理程序routes/signup.js。因此写是没有意义的app.post(router.post(function (req, res, next) {})

您必须使用express.JS API 参考app.use中所述的功能。

app.use('/signup', signupRoute)其视为/signup常见注册功能的命名空间。例如,将来您可能希望通过/user/create这样的路由重用 SignUp 功能app.use('/user/create', signupRoute)

这是您的示例的外观:

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);
于 2018-08-07T07:57:30.747 回答
0

router.post 已经包含一个 post 方法,在这种情况下使用 app.post 而不是 app.use 方法。

app.use('/signup',signuproute);

Signup 路由包含您在 signup.js 中编写的任何方法,这些方法都可以在 /signup 路由中访问。

于 2018-08-07T07:20:02.960 回答
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
于 2018-08-07T04:53:20.693 回答