中查找視圖「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