节点JS路由不起作用,始终显示无法发布

时间:2018-08-07 03:36:17

标签: javascript node.js aws-sdk-nodejs

我也提到了关于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;

3 个答案:

答案 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路由中访问。

相关问题