【发布时间】:2017-07-01 00:49:44
【问题描述】:
为什么这里没有注册路由?出于某种原因,当我访问 /api/test 时出现 404 未找到。当我将路由注册移到 then 函数之外时,它可以工作。此 sn-p 是从快速生成的模板中的 app.js 添加的。
var Q = require('q');
promisify().then(stringText => {
var route = express.Router();
route.get('/test', (req, res) => res.send('Hi'));
app.use('/api', route);
});
function promisify() {
var deferred = Q.defer();
deferred.resolve('Hello World');
return deferred.promise;
}
这可行(如果您将路线注册移到外面):
var Q = require('q');
var route = express.Router();
route.get('/test', (req, res) => res.send('Hi'));
app.use('/api', route);
promisify().then(stringText => {
});
function promisify() {
var deferred = Q.defer();
deferred.resolve('Hello World');
return deferred.promise;
}
更新:重现步骤
- 通过在命令行中输入
express在文件夹上创建一个快速模板。 - 然后安装包,
npm install。 - 同时安装q库
npm install --save q -
在注册其他路由的代码下方添加代码:
app.use('/', index); app.use('/users', users); // Add the code above here
【问题讨论】:
-
我的猜测是您遗漏了一个“包罗万象”的处理程序,该处理程序被安装以捕获未处理的请求,而该处理程序又会在 API 处理程序 之前被调用(因为定义处理程序的顺序)。