2016-03-06 19 views
5

Jak mogę użyć pliku o nazwie kropka na res.render() w pliku express.js? Na przykładExpress.js res.render nazwa pliku kropki

Tam jest plik szablonu o nazwie view.sample.ejs, chcę, aby uczynić go

app.get('/sample', function(req, res){ 
    res.render('view.sample'); 
}) 

Rezultatem jest

Error: Cannot find module 'sample' 

Jak mogę używać kropki?

(plus)

Chcę wymienić śledzić mvc modelu, jak

sample.model.js 
sample.controller.js 
sample.view.ejs 
sample.view.update.ejs ... 

żaden problem js plik, ale czynią plik EJS nie mogłem.

+0

Czy szuka "próbki" w pliku "view/sample.ejs" zamiast pliku o nazwie "view.sample.ejs"? – Michael

+0

@ Michael No, no directory. just view.sample.ejs :) – Juntae

+2

Aby uwzględnić inne okresy w nazwie, musisz podać pełną nazwę pliku w argumencie - 'res.render ('view.sample.ejs');'. Express zakłada, że ​​'.sample' jest rozszerzeniem pliku przez jego obecność w argumencie, więc nie doda' .ejs', aby znaleźć żądany plik. (W przeciwnym razie musisz rozważyć użycie innej interpunkcji.) –

Odpowiedz

5

Jeśli spojrzymy w bibliotece node_modules/express/lib/view.js, okazuje się, że projekt ścieżki do wszystkiego szablonu po kropce w nazwie pliku są uważane jako rozszerzenie:

this.ext = extname(name); // 'view.sample' => '.sample' 
this.name = name;   // 'view.sample' => 'view.sample' 

A kiedy staramy się załaduj odpowiedni silnik rozszerzenia pliku wygeneruje błąd:

if (!opts.engines[this.ext]) { // '.sample' engine not found 
    // try load engine and throw error 
    opts.engines[this.ext] = require(this.ext.substr(1)).__express; 
} 

OK, co robić? Po prostu dodaj rozszerzenie:

app.get('/sample', function(req, res){ 
    res.render('view.sample.ejs'); 
}) 
Powiązane problemy