因为在express3.X以下版本中, -t命令参数已经失效
express -t ejs microblog
需改成:
express -e microblog
express4.x+版本都是使用npm start命令来启动项目了,同时也将原来用于项目启用的代码移动到 自动创建的.bin/www这个文件中了
所以直接运行npm start来快速启动项目,或者node bin/www,或者监控代码:supervisor bin/www , 如下:
express4.*已经放弃使用partial模块,改用 include 了
改动:
list.ejs:
<ul>
<% items.forEach(function(item){ %>
<% include listitem %>
<% }) %>
ul>
listitem.ejs:
<li>
<%= item %>
li>
app.helper和app.dynamicHelpers 分别为express2.X所使用的静态视图和动态视图助手函数。
在express3.X后,这两个方法被废除,使用的是locals方法,用法如下:
app.locals({
key1: value1,
key2: value2
});
即:
app.locals({
inspect: function(obj){
return util.inspect(obj, true);
}
});
在express4.X 后,locals使用方式,如下:
app.locals.key1 = value1;
app.locals.key2 = value2;
即:
app.locals.inspect = function(obj){
return util.inspect(obj, true);
}
app.js 添加:
console.log("环境变量=" + process.env.NODE_ENV);
可打印出当前的运行模式(1.devlopment 开发模式-利于调试;2.production 产品模式-利于部署).)
app.js :
var fs = require('fs');
var logger = require('morgan');// morgan中间件记录日志
var moment = require('moment');// 时间格式化(文件模块)
// 1日志文件(可不提前新建access.log和error.log, 执行时,会自动在项目根目录下生成。)
var accessLogfile = fs.createWriteStream('access.log', {flags: 'a'});// 1请求日志
var errorLogfile = fs.createWriteStream('error.log', {flags: 'a'});// 2错误日志
app.use(logger('combined', {stream: accessLogfile}));// 1-将请求信息存在文件中-
//...app.js最后面添加异常处理...
// 1-开发模式
// 1-404错误处理
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// 1-error handler,500错误处理,
/* ps:这个500处理,是app.js中默认的开发模式//处理方式,在添加下面产品模式的50处理时,要将开发模式的500处理注释掉。*/
/*app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});*/
// 2-产品模式 500异常处理
app.use(function (err, req, res, next) {
// console.log(" req.app.get('env')=="+ req.app.get('env'));
var meta = '[' + moment(new Date()).format('YYYY-MM-DD HH:mm:ss') + ']' + req.url + '\n';
errorLogfile.write(meta + err.stack + '\n');
next();
});
index.js中添加500异常测试:
router.get('/', function(req, res, next) {
// res.render('index', { title: '首页' });
throw new Error('发生一个错误啦...');// 500异常测试
Post.get(null, function (err, posts) {
if(err){
posts = [];
}
res.render('index', {
title: '首页',
posts: posts
})
})
});
源码地址:https://gitee.com/minimey/microblog.git