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