将Express Js启动文件拆分为模块

问题描述 投票:0回答:1

这听起来很愚蠢,但是我一直试图将ExpressJS启动文件拆分为模块,但没有成功。

这是我想要实现的目标,但是当我启动服务器时,我对住家地址的请求没有任何回应,而且我似乎找不到原因。

---- app.js ----

const path = require('path');
const express = require('express');

const bodyParser = require('body-parser'); // parse json and form post

const indexRoutes = require('./Routes/index');

const app = express();


//ejs view
app.set('view engine', 'ejs');
app.set('views', 'views');

//set cors
app.use((req, res, next) => {
   res.setHeader("Access-Control-Allow-Origin", "*");
   res.setHeader("Access-Control-Allow-Methods", "GET", "POST");
});

//middlewares
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//routes - MVC
app.use(indexRoutes);

module.exports = app;

---- server.js ------

const app = require('./app');
const http = require('http')

http.createServer(app).listen(3000, ()=> {
  console.log('server is up');
});

----路线----

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

router.get('/', function(req, res, next) {
   res.send('Test');
})     

module.exports = router;

我做错什么了吗?我怀疑这与导出应用程序有关,但是我现在真的不知道如何解决它

node.js mongodb express ejs
1个回答
0
投票

问题是您没有在中间件中调用next()

所以这个:

//set cors
app.use((req, res, next) => {
   res.setHeader("Access-Control-Allow-Origin", "*");
   res.setHeader("Access-Control-Allow-Methods", "GET", "POST");
});

需要更改为此:

//set cors
app.use((req, res, next) => {
   res.setHeader("Access-Control-Allow-Origin", "*");
   res.setHeader("Access-Control-Allow-Methods", "GET", "POST");
   next();
});

因此,只要请求到达此中间件,就不会发生其他路由。

© www.soinside.com 2019 - 2024. All rights reserved.