Nodejs的独立代码包括中间件use()
nodejs separate code include middleware use()
我是nodejs新手,下面是我用express --sessions --css less --hogan app
命令安装的app.js
我试图将app.js
中的注释行分开,移动到一个名为route_handler.js
的新文件。
我不确定我做的是正确的,我只在app.js
中添加了require('./route_handler.js');
,我应该在route_handler.js
中导出,但它是express()
吗?
如何解决?
require
表示已经执行了文件中的代码吗?
app.js
var express = require('express');
var path = require('path');
// var favicon = require('serve-favicon');
// var logger = require('morgan');
// var cookieParser = require('cookie-parser');
// var bodyParser = require('body-parser');
// var routes = require('./routes/index');
// var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
// end: view engine setup
require('./route_handler.js');
// // uncomment after placing your favicon in /public
// //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// app.use(logger('dev'));
// app.use(bodyParser.json());
// app.use(bodyParser.urlencoded({ extended: false }));
// app.use(cookieParser());
// app.use(require('less-middleware')(path.join(__dirname, 'public')));
// app.use(express.static(path.join(__dirname, 'public')));
// app.use('/', routes);
// app.use('/users', users);
// // catch 404 and forward to error handler
// app.use(function(req, res, next) {
// var err = new Error('Not Found');
// err.status = 404;
// next(err);
// });
// // error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
route_handler.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
// var app = express();
var routes = require('./routes/index');
var users = require('./routes/users');
// uncomment after placing your favicon in /public
//express().use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
express().use(logger('dev'));
express().use(bodyParser.json());
express().use(bodyParser.urlencoded({ extended: false }));
express().use(cookieParser());
express().use(require('less-middleware')(path.join(__dirname, 'public')));
express().use(express.static(path.join(__dirname, 'public')));
express().use('/', routes);
express().use('/users', users);
// catch 404 and forward to error handler
express().use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
//导出express() ??
您的问题是route_handler.js
脚本在每个use
调用中创建新的express
实例,并且它们中没有一个连接到在app.js
中创建的应用程序。
你应该这样做:
route_handler.js
// !!!NOTE: no express = require !!!
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
function setupRoutes(app)
{
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
...
}
module.exports = setupRoutes;
和app.js
...
require('./route_handler.js')(app);
...
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- Redux中间件在next()之前更改状态
- 快速的套接字 io 实例/中间件
- 如何使用Express'正确加载图像;s的静态中间件
- 如何在快递中制作中间件的动态链.js
- 在 Redux 中,在商店中应用中间件未正确称为化简器
- 意思是.JS中间件中的猫鼬填充不起作用
- "Cookies的这个实例“;在nodejs cookie中间件的源代码中
- Expressjs:如何跨路由共享路由中间件
- 如何在Keystone.js项目中使用Express.js中间件
- Express.js恶意路径中间件错误403
- 编写中间件'它不知道它在堆栈上的位置
- Router.use()需要中间件函数,但得到了一个未定义的函数
- 创建路由得到 Router.use() 的错误需要中间件功能
- 快速中间件:app.use和app.all
- TypeError:app.use()需要中间件函数
- App.use()需要中间件函数
- Typeerror: app.use()需要中间件功能
- Nodejs的独立代码包括中间件use()