2017-06-09 24 views
0

我的服務器上的所有控制器都得到MongoDB的數據並將其發送回角爲JSON格式使用res.json(result);爲什麼我只需要一個視圖引擎(jade/pug)就可以使用res.json();

我需要哈巴狗或翡翠等..只是送一個json結果?

如果我沒有玉,我得到這個錯誤:

Error: No default engine was specified and no extension was provided. 

如果我安裝玉,然後我得到這個錯誤:

Failed to lookup view "error" in views directory "G:\Dropbox\ThaiHome\Github\server\views" 

(我沒有\意見\文件夾在服務器上,我需要創建發送json嗎?)

是否有一個基本的簡單方法來設置我的nodejs服務器來解析json到角?

(我已經嘗試過,沒有運氣以下)

// view engine setup 

// app.use(express.static(__dirname + '')); 
// app.engine('html', require('ejs').renderFile); 
// app.set('view engine', 'html'); 
// app.set('views', path.join(__dirname, 'views')); 
// app.set('view engine', 'jade'); 
// app.set('view engine', 'html'); 
// app.set('view engine', 'json'); 

這裏是app.js文件

https://www.dropbox.com/s/7ajp2p0qor74z6o/app.js?dl=0

,這裏是我的文件夾結構

enter image description here

+0

你還在面對這個問題嗎? –

回答

1

如果您只是呈現HTML,並且您沒有 server任何地方,則不需要使用任何視圖引擎。

只需使用靜態中間件而不是任何視圖引擎。

app.use(express.static(__dirname + '/public')); 

我希望所有的靜態HTML文件都在public文件夾中。

注意:如果您使用此功能,則您的代碼中的任何位置都不得有res.render。因爲,res.render需要一個視圖引擎,它會拋出一個錯誤,說沒有默認引擎指定,如果你沒有。

不要忘了檢查你的app.js以及。默認情況下,快速應用錯誤處理程序使用res.render來呈現錯誤。

+0

我沒有靜態HTML文件來從我的節點控制器提供服務。他們所做的就是向調用者提供JSON數據(角度)。但!!出於某種原因,它想要...或者它不會讓我拋出錯誤或有錯誤。如果我把'app.set('view engine','html')'I get'找不到模塊'html',我所需要的就是'沒有指定默認引擎並且沒有提供擴展'在控制檯中有一個很好的錯誤信息,以防出現錯誤或發生錯誤。 – torbenrudgaard

+0

拉維有辦法做到這一點,或者我將不得不安裝玉/帕格或ejs或鞏固和鬍鬚等....或者我必須公開創建一個HTML文件來顯示錯誤或? – torbenrudgaard

+0

你能顯示你的項目目錄結構嗎?另外,試着將所有的html文件保存在公共文件夾中,看看它是否有效。另外,你可以顯示你的'app.js'嗎?是的!你可以做到這一點沒有任何視圖引擎 –

1

確保你的應用程序不是試圖渲染一些玉器。 例如像在app.js文件:

app.use((err, req, res, next) => { 
    res.status(err.status || 500); 
    res.render('error', { 
     user: {}, 
     message: err.message, 
     error: {} 
    }); 
}); 

的res.render將嘗試呈現在視圖文件夾中的文件error.jade。

+0

我到處檢查 - 我沒有在任何地方使用res.render。我唯一使用的是res.json。那也是玉的一部分嗎? – torbenrudgaard

+0

@torbenrudgaard錯誤是由[錯誤處理程序](http://expressjs.com/en/guide/error-handling.html)引起的。也許你正在使用應該處理錯誤的中間件,這取決於模板? – robertklep

相關問題