Node.js"无法POST / [路由]"

时间:2016-06-01 03:19:38

标签: node.js

YesIKnowWhatImDoingAndIStillWantToDoIt我有这些方法:

util/index.js

在我的'use strict'; const parser = require('body-parser'); const express = require('express'); const app = express(); const RtmClient = require('@slack/client').RtmClient; const RTM_EVENTS = require('@slack/client').RTM_EVENTS; const db = require('../db').db; const rtm = new RtmClient(process.env.SLACK_API_TOKEN); app.use(parser.urlencoded({extended: true})); rtm.start(); let POST = (url, handler) => { app.post(url, (req, res) => { handler(req) .then(data => { res.status(200).send(data); }) .catch(error => { res.status(500).send('Error: ' + error.message || error); }); }); }; let setStatus = url => { POST(url, req => db.users.insert({ username: req.body.user_name, userid: req.body.user_id, status: url.toUpperCase() })); }; module.exports = { POST, setStatus }; 中,我称他们为:

project/index.js

然后我得到'use strict'; const port = process.env.PORT || 3000; const db = require('./db').db; const express = require('express'); const app = express(); const u = require('./util'); u.POST('/logdash', () => db.users.select()); u.setStatus('here'); u.setStatus('out'); u.setStatus('break'); u.setStatus('left'); u.setStatus('sick'); u.setStatus('hungry'); app.listen(port, () => { console.log('Server is now running on port ' + port); }); 。这是一个Slack应用程序,在将这两个方法转移到另一个文件之前,它运行得很好。我还不太了解Node.js,因为这是我做的第一个应用程序。我习惯于编写像PHP这样的语言,但是,通过将方法分离到不同文件中的传统方式,我会抛出这个错误。

我认为问题出在Cannot POST /[route]方法中,因为它在访问路径并完成数据库操作时会在通道中显示一条消息,但是当从另一个文件中请求它时,我可能需要做一些不同的事情

1 个答案:

答案 0 :(得分:0)

感谢@SLaks评论,我可以思考并想出来。

首先,我已导出app,必需并启动它:

u.app.listen(port, () => {
    console.log('Server is now running on port ' + port);
});

其他问题仅仅是因为'/'方法中url参数之前缺少setStatus

let setStatus = url => {
    POST('/' + url, req => db.users.insert({
        username:   req.body.user_name,
        userid:     req.body.user_id,
        status:     url.toUpperCase()
    }));
};