逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述app.post不是函数表达节点相关的知识,希望能为你提供帮助。
我在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;
apis.js:
module.exports = function(app){app.get('/', function(req, res) {
res.send('OK');
});
app.post('/idea', function(req, res) {
...
});
};
此外,在server.js中使用
module.exports = app
非常重要,因为我已经运行了测试,并且我每次都想要一个app实例。我错过了什么?
答案更好的方法: -
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;
apis.js: -
var router = require('express').Router();
router.post('/url',function(req,res,next){
//your code
})module.exports = router
另一答案您需要将快速应用程序传递到
apis
模块,以便将路由附加到您的应用程序。如果你想使用app.use
将你的路由放在不同的根路径中,你可以创建另一个快速路由器,并将你的路由连接到那个,然后app.use
该路由器: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 = express.Router();
require('./routes/apis')(apis);
app.use('/', apis);
module.exports = app;
另一答案有几种不同的方法可以将您的应用程序连接到您的路线,在我看来,您将它们混合在一起,从而导致您的错误。
【app.post不是函数表达节点】已经提到的修复......
var router = require('express').Router();
router.post('/url',function(req,res,next){
//your code
})module.exports = router
...适用于您目前设置
server.js
文件的方式。另一种不需要您修改
apis.js
文件的方法是在server.js
中使用它require("./routes/apis.js")(app);
代替
var apis = require('./routes/apis');
app.use('/', apis);
这确保了变量app被传递到
apis.js
中的函数中建议使用第一个版本,但希望这可以解释为什么你在两者之间感到困惑,即因为第二个版本是备用版本。
有关建议使用路由器版本的原因的详细信息,请参阅Differences between express.Router and app.get?。
推荐阅读
- android studio中的错误字符集
- 空指针异常,android.widget.Tablayout.getChildAt(int)
- 解决错误Android Studio(安装失败,消息为null)
- 如何在android中改变可绘制形状的颜色
- gps在DELPHI全职安装android服务的位置
- 新款Macbook Air笔记本安装Windows 8时出现黑屏无法正常安装怎样办
- win8.1系统自带的ie11浏览器突然停止工作怎样办【图】
- win8系统更改微软账户失败出现出错0xd00000bb的处理办法【图】
- 安装win8系统没声音提示中没有接入音频设备的处理办法【图文】