2017-07-30 24 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是罪魁禍首。 張貼在這裏幫助他人避免浪費時間,當有同樣無法解釋的問題。

相關問題