2017-07-30 23 views
-1

中查找视图“index.ejs”。我是经验丰富的程序员,学习MEAN堆栈。实践中得到了这个错了,“在尝试了所有解决方案后,EJS仍然无法在视图目录

无法查找视图views目录‘物理路径’的完整路径”。

我以为路径不是一个复杂的事情,令人惊讶的AFTER搜索和尝试了很多这里同样犯错的解决方案仍然没有能够解决这个问题。这是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', ...); 
    }) 
}) 

以下是WH在我尝试和结果

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

失败在视图目录查找视图 “index.ejs” “C:\ Node.project \意见”


// -- 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', ...); 

无法查找视图


// -- 3) concat, __dirname + '/views' 
app.set('views', __dirname + '/views'); 
res.render('index.ejs', ...); 
:在views目录 “\ Node.project \ mean1 \意见C” “index.ejs”

失败在视图目录 “C:\ Node.project \ mean1 /视图” 来查找视图 “index.ejs”


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

失败在视图目录查找视图 “index.ejs”“C :\ Node.project \ mean1iews “


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

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

我的猜测是它有事情做与结构

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

如何启动的节点?无论是Nodemon或节点,即在 夹Node.project,

“nodemon MEAN1/server.js”

或者说,MEAN1文件夹,

“节点服务器。 JS”

+0

默认情况下,EJS使用相对于root的./views文件夹。试试这个:https://scotch.io/tutorials/use-ejs-to-template-your-node-application。您也可以省略.ejs扩展名。我建议设置基本用法,以便您可以建立一个基线并看到它的功能,然后开始优化您的结构。 – agm1984

+0

我无法准确看出问题出在哪里,但我认为你很接近。我还看到有机会提到Express可以对使用它们的事件加载中间件的顺序敏感。我会把'app.use()'东西放在你所有的路由上面。 – agm1984

+1

@ agm1984感谢您的评论,现在检查它... – Jeb50

回答

0

要我最大的惊喜阅读并尝试了多种方式差异后,只需复制index.ejs为XX.ejs,在server.js改为“指数”与“XX”,万岁! 仍然不知道是什么原因。 我看到几个相同的错误,而位置和文件都没有W/O正确的原因。它可能表明Express是罪魁祸首。 张贴在这里帮助他人避免浪费时间,当有同样无法解释的问题。

相关问题