0
在util/index.js
我有以下方法:Node.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);
});
但后来我得到Cannot POST /[route]
。这是一个Slack应用程序,并且在将这两种方法转换为另一个文件之前,它运行良好。我还不太了解Node.js,因为这是我制作的第一个应用程序。我习惯于像PHP这样的编程语言,但是通过使用与传统的方法分离到不同文件中相同的方式,我发现了这个错误。
我认为这个问题出现在POST
方法中,因为它在访问路由和完成数据库操作时在通道中显示一条消息,但是当我需要从另一个文件进行操作时,我可能需要做一些不同的操作。
你有两个不同的'app's(在这两个模块中),你只能启动其中的一个。 – SLaks
开始你的意思是'app.listen'? – mfgabriel92
好的,我明白了。我导出了'app'并使用'u.app.listen'。像这样,'/ logdash'命令起作用了,但其他的仍然显示相同的错误。 – mfgabriel92