简体   繁体   English

快递路由器无法获取/

[英]express router cannot get/

I have an app where I am trying to move the routes to separate files.我有一个应用程序,我试图将路由移动到单独的文件。 I keep getting a CANNOT GET/ when trying to use express router.尝试使用快速路由器时,我不断收到无法获取/。 I've set it up the same way I have it in other apps but can't get it to work.我的设置方式与在其他应用程序中的设置方式相同,但无法正常工作。

this is in my routes folder: index.js这是在我的路由文件夹中:index.js

var express    = require('express');
var router     = new express.Router();
var Blog       = require('../models/blogpost'); 
var User       = require('../models/user');
var passport   = require('passport');

router.get("/", function(req, res){
 Blog.find({}, function(err, blogs){
  if(err){
      console.log(err);
  } else {
      res.render("index", {blogs: blogs});
  }
});
});

module.exports = router;

This is my app.js file:这是我的 app.js 文件:

var methodOverride   = require('method-override'),
LocalStrategy    = require('passport-local'),
bodyParser       = require('body-parser'),
nodeMailer       = require('nodemailer'),
passport         = require('passport'),
mongoose         = require('mongoose'),
express          = require('express'),
request          = require("express"),
router           = express.Router(),
User             = require('./models/user'),
Blog             = require('./models/blogpost'),  
Comment          = require('./models/comment'),  
middleware       = require('./middleware'),
app              = express(),
request          = require('request'),
indexRoutes      = require('./routes/index');

//==================================
//APP CONFIG
//==================================

// mongoose.connect("mongodb://localhost/amy_blog");
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended: true}));
app.use(methodOverride("_method"));

app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(function(req, res, next){
res.locals.currentUser = req.user;
next();
});

app.use(express.static(__dirname + "/public"));

app.use('/', indexRoutes);

=====================

app.listen(process.env.PORT, process.env.IP, function(){
console.log("================================");
console.log("The Blog server has started!");
console.log("================================");
});

Any help would be greatly appreciated.任何帮助将不胜感激。 Been racking my mind about this one for awhile.对这个问题纠结了一段时间。

You don't want to be creating a new instance of express.Route() .您不想创建express.Route()的新实例。

In your routes file remove the new keyword from where you assign the router variable.在您的路由文件中,从您分配router变量的位置删除new关键字。 Probably just a typo.可能只是一个错字。

As per the docs https://expressjs.com/en/guide/routing.html根据文档https://expressjs.com/en/guide/routing.html

express.Router() instance is a middleware and routing system for Express.js. express.Router()实例是 Express.js 的中间件和路由系统。 In your code, there are two mistakes you are making:在您的代码中,您犯了两个错误:

  1. Calling express.Router() with the new keyword使用 new 关键字调用express.Router()
  2. Not loading the router module in the app未在应用程序中加载路由器模块

Below is a simple approach you can use to make your application work:下面是一个简单的方法,您可以使用它来使您的应用程序正常工作:

const express = require('express');
const app = express();
const router = express.Router();

// This route handler is for demo purposes,
// you can replace it with your own route and add other routes as desired
router.get("/", (request, response) => {
  response.json({"message": "app works!"});
});

app.use("/", router); // Load the router module

app.listen(8080, () => 'Server started and is listening on port: 8080');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM