在尝试了所有解决方案之后,EJS仍无法在视图目录

时间:2017-07-30 19:00:04

标签: node.js

我是一名经验丰富的程序员,学习MEAN堆栈。在练习中犯了这个错误,“

  

无法在视图目录的“物理路径”中查找视图“完整路径”。

我认为路径并不是一件复杂的事情,令人惊讶的是在搜索之后并尝试了许多类似错误的解决方案仍然无法解决它。这是我的server.js的基本代码,注意 res.render

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
...
app.get('/quotes', (req, res)=>
{    res.sendFile(__dirname + '/index.html'); })    // running ok
// post-to (Create)
app.post('/quotes', (req, res) => 
{
    ...
    {
        res.redirect('/');
    })
})

app.set('view engine', 'ejs');
app.get('/', (req, res)=>
{
    ...
    {
        res.render('index.ejs', ...);  
    })
})

以下是我的尝试和结果

// -- 1) original
res.render('index.ejs', ...);

无法在视图目录“C:\ Node.project \ views”中查找视图“index.ejs”

// -- 2) set path explicitly ahead of "view engine" using path.join()
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
res.render('index.ejs', ...);

无法在视图目录“C:\ Node.project \ mean1 \ views”中查找视图“index.ejs”

// -- 3) concat, __dirname + '/views'
app.set('views', __dirname + '/views');
res.render('index.ejs', ...); 

无法在视图目录“C:\ Node.project \ mean1 / views”中查找视图“index.ejs”

// -- 4) reverse "/" to "\"
app.set('views', __dirname + '\views');
res.render('index.ejs', ...); 

无法在视图目录“C:\ Node.project \ mean1iews”中查找视图“index.ejs”

// -- 5) w/o setting default "views", simply tell where to look for the template
res.render(__dirname + '/MEAN1/views/index.ejs', ...);  

无法在视图目录“C:\ Node.project \ views”中查找视图“C:\ Node.project \ mean1 / views / index.ejs”

我的猜测是它与结构

有关
\Node.project (folder)
  |-- package.js, package.json (files)
  |
  \MEAN1 (folder)
      |-- index.html, server.js (files)
      |
      \views (folder)
          |-- index.ejs

如何启动节点? Nodemon或Node,即 在Node.project文件夹中,

  

“nodemon MEAN1 / server.js”

或者,在MEAN1文件夹中,

  

“node server.js”

1 个答案:

答案 0 :(得分:0)

在阅读并尝试了很多差异方法后,我最大的惊喜,只需将index.ejs复制为XX.ejs,在server.js中将“index”替换为“XX”,Hooray! 仍然不确定是什么原因。 我看到一些相同的错误,而位置和文件都没有正确的原因。它可能暗示快递是罪魁祸首。 发布在这里是为了帮助其他人避免在遇到同样无法解释的问题时浪费时间。