ExpressJS, распознавать представление в структуре модуля - PullRequest
0 голосов
/ 30 октября 2011

Я создал файлы:

app.coffee

express  = require('express')
routes   = require('./config/routes')
app      = express.createServer();

require('./config/environment')(app)
require('./config/routes')(app)

app.listen(3000);

конфиг / environment.coffee

module.exports = (app) ->
  app.configure = () ->
    # set view path, template engine and defsult layout
    app.set 'view', __dirname + '/views'
    app.set 'view engine', 'jade'
    app.use(app.router)

конфиг / routes.coffee

site = require('../controllers/site.js')
module.exports = (app) ->
  app.get '/', site.index

Контроллеры / site.coffee

exports.index = (req, res) ->
  res.render 'main.jade', {title: 'New Article'}

Проблема в файле site.coffee, потому что когда я не пишу расширение, такое как 'jade', ExpressJS engin пытается открыть файлы с расширением 'undefined'. Как я могу вспомнить просмотр движка из файла окружения?

1 Ответ

0 голосов
/ 30 октября 2011

Вам не нужна строка

app.set 'view engine', 'jade'

Как говорят Express docs , все, что он делает, это позволяет вам пропустить расширение .jade, например,

res.render 'main', {title: 'New Article'}

Я полагаю, ваша проблема в линии

app.set 'view', __dirname + '/views'

который вы запускаете с config/environment.coffee. __dirname относится к конкретному файлу, поэтому вы установили каталог просмотров на config/views - вероятно, не то, что вы хотели. Попробуйте просто пропустить эту строку; по умолчанию это path.join process.cwd(), 'views', что, как я предполагаю, это то, что вы на самом деле хотите.

Кроме того, хотя у вас есть комментарий по поводу настройки «макета по умолчанию», я его не вижу. Так что, если у вас продолжают возникать проблемы, вы можете попробовать

res.render 'main.jade', {layout: false}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...