美文网首页
Sails显示E_VIEW_FAILED错误原因

Sails显示E_VIEW_FAILED错误原因

作者: maxbin | 来源:发表于2017-08-18 22:35 被阅读94次

    错误信息

    {
        "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很可能就是一个坑

    相关文章

      网友评论

          本文标题:Sails显示E_VIEW_FAILED错误原因

          本文链接:https://www.haomeiwen.com/subject/apdzrxtx.html