ExpressJS, Nodester, шаблоны рендеринга путей? - PullRequest
1 голос
/ 31 августа 2011

Я написал простое приложение expressjs, которое отлично работает локально и даже на no.de, но на Nodester, когда я получаю доступ к http://myapp.nodester.com/, я получаю Internal Server Error, а в журналах пишется

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

Затем через модуль fs я попытался выяснить, почему его там не было, и fs.readdir('.',function(error,files){console.log(files)}) вернул это:

[ '.nodester',
  'app',
  'node_modules',
  'usr',
  'lib64',
  'sbin',
  'etc',
  'dev',
  'proc',
  'home',
  'bin',
  'lib',
  'root',
  '.PKGINFO',
  '.INSTALL' ]

И я также обнаружил, что все файлы, которые я git push ed, являютсявнутри каталога apps.

Означает ли это, что я должен указать правильный путь к папке views?Как я могу это сделать ?(Я знаю только, как сказать, чтобы файл отображался по абсолютному пути).

1 Ответ

2 голосов
/ 01 сентября 2011

Настройка просмотра каталогов вручную с использованием встроенной переменной __dirname:

var app = module.exports = express.createServer();
app.configure(function(){
        ...
        app.set('views', __dirname + '/views');
        app.use(express.static(__dirname + '/public'));
});

Попробуйте сгенерировать скелет приложения с помощью инструмента express comman-line (он доступен, если вы устанавливаете последнюю экспресс-версию из npm). Это создает хорошую отправную точку для вас.

...