这听起来很愚蠢,但是我一直试图将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;
我做错什么了吗?我怀疑这与导出应用程序有关,但是我现在真的不知道如何解决它
问题是您没有在中间件中调用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();
});
因此,只要请求到达此中间件,就不会发生其他路由。