错误信息
{
"message": "Could not render view \"user\\list\". Tried locating view file @ \"/Users/maxbin/java/git/TDH-CMDS/views/user\\list\". Layout configured as \"layout\", so tried using layout @ \"/Users/maxbin/java/git/TDH-CMDS/views/layout\")",
"code": "E_VIEW_FAILED",
"status": 500,
"view": {
"name": "user\\list",
"root": "/Users/maxbin/java/git/TDH-CMDS/views",
"defaultEngine": "ejs",
"ext": ".ejs"
}
}
原因分析
- 由于项目刚开始在在公司windows系统电脑上写的,页面路径写死了分隔符"\"
// 跳转页面的一个类
module.exports = {
index: function (req, res) {
var param_model = req.param('model');
var param_name = req.param('name', '404');
if(!param_name){
param_name = '404';
}
if(param_model){
return res.view(param_model + "\\" + param_name);
}else{
return res.view(param_name);
}
}
};
- 导致在windows上运行没有问题,回到家中想继续写代码的时候,在mac上运行发现无法跳转页面了,由于报错信息不明显,导致调试了一会才找到这个原因;
- 其实如果仔细看报错信息,细心点还是可以发现路径不一致的问题
/git/TDH-CMDS/views/user\\list\
修改方法
- 用系统分隔符替换代码中写的固定windows分隔符
// 引入nodeJS的path模块
var path = require("path");
module.exports = {
index: function (req, res) {
var param_model = req.param('model');
var param_name = req.param('name', '404');
if(!param_name){
param_name = '404';
}
if(param_model){
return res.view(param_model + path.sep + param_name);
}else{
return res.view(param_name);
}
}
};
- 总结一下:下代码还是不要偷懒了,随手写的hardcode很可能就是一个坑