快线功能未吊装
Express route functions not hoisted
有人可以向我解释一下为什么我的 Express 路线没有挂起吗?我经常看到抛出以下错误:
throw new TypeError('Router.use() requires middleware functions');
以下文件不会产生错误:
var express = require('express'),
router = express.Router()
var loadWidget = function (req, res, next) {
req.widget = { text: 'Widget' };
return next();
};
var sendWidget = function (req, res, next) {
return res.status(200).send(req.widget);
};
router.use(loadWidget);
router.get('/', sendWidget);
module.exports = router;
但是,改变方法的顺序,如下面的文件,确实抛出错误:
var express = require('express'),
router = express.Router()
router.use(loadWidget);
router.get('/', sendWidget);
var loadWidget = function (req, res, next) {
req.widget = { text: 'Widget' };
return next();
};
var sendWidget = function (req, res, next) {
return res.status(200).send(req.widget);
};
module.exports = router;
我希望我的文件包含文件头部的操作(use
、get
、post
等)以及函数的实际主体下面。
附带说明一下,当我第一次调用该应用程序时会抛出错误。使用 nodemon 发送 rs
不会抛出错误:
导致错误:
NODE_APP='app01' nodemon ./server/server
没有错误:
rs
函数声明在 javascript 中被提升,但函数表达式没有。函数表达式为:
var fn = function() {};
和函数声明:
function fn() {};
有人可以向我解释一下为什么我的 Express 路线没有挂起吗?我经常看到抛出以下错误:
throw new TypeError('Router.use() requires middleware functions');
以下文件不会产生错误:
var express = require('express'),
router = express.Router()
var loadWidget = function (req, res, next) {
req.widget = { text: 'Widget' };
return next();
};
var sendWidget = function (req, res, next) {
return res.status(200).send(req.widget);
};
router.use(loadWidget);
router.get('/', sendWidget);
module.exports = router;
但是,改变方法的顺序,如下面的文件,确实抛出错误:
var express = require('express'),
router = express.Router()
router.use(loadWidget);
router.get('/', sendWidget);
var loadWidget = function (req, res, next) {
req.widget = { text: 'Widget' };
return next();
};
var sendWidget = function (req, res, next) {
return res.status(200).send(req.widget);
};
module.exports = router;
我希望我的文件包含文件头部的操作(use
、get
、post
等)以及函数的实际主体下面。
附带说明一下,当我第一次调用该应用程序时会抛出错误。使用 nodemon 发送 rs
不会抛出错误:
导致错误:
NODE_APP='app01' nodemon ./server/server
没有错误:
rs
函数声明在 javascript 中被提升,但函数表达式没有。函数表达式为:
var fn = function() {};
和函数声明:
function fn() {};