app.post不是函数表达节点

fsc*_*ore 3 javascript routes node.js express

我在server.js中拥有所有路由,但我想将其模块化并放入名为routes的文件夹中.我在routes文件夹中创建了一个名为apis.js的文件,但正如我所做的那样TypeError: app.post is not a function

server.js:

var express    = require('express');
var app        = express();

var bodyParser = require('body-parser');
var urlencode = bodyParser.urlencoded({ extended: true});

app.use(express.static('public'));

var apis = require('./routes/apis');
app.use('/', apis);

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

apis.js:

  module.exports = function(app){

  app.get('/', function(req, res) {
    res.send('OK');
  });

  app.post('/idea', function(req, res) {
  ...
  });

};
Run Code Online (Sandbox Code Playgroud)

另外,module.exports = app在server.js中使用很重要,因为我运行了测试,每次都想要一个app实例.

我错过了什么?

小智 8

更好的方法: -

server.js

var express    = require('express');
var app        = express();

var bodyParser = require('body-parser');
var urlencode = bodyParser.urlencoded({ extended: true});

app.use(express.static('public'));

var apis = require('./routes/apis');
app.use('/', apis);

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

apis.js: -

var router = require('express').Router();
router.post('/url',function(req,res,next){
 //your code 
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)