中查找视图“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”
。
默认情况下,EJS使用相对于root的./views文件夹。试试这个:https://scotch.io/tutorials/use-ejs-to-template-your-node-application。您也可以省略.ejs扩展名。我建议设置基本用法,以便您可以建立一个基线并看到它的功能,然后开始优化您的结构。 – agm1984
我无法准确看出问题出在哪里,但我认为你很接近。我还看到有机会提到Express可以对使用它们的事件加载中间件的顺序敏感。我会把'app.use()'东西放在你所有的路由上面。 – agm1984
@ agm1984感谢您的评论,现在检查它... – Jeb50