Express: статични файлове не са намерени при използване на ejs

Искам всичките ми заявки да бъдат пренасочени към изглед index.ejs, намиращ се в папката Views. В моя файл routes.js добавих това:

  module.exports = function (app) {

  app.get('/', function(req, res) {
     res.render('index', {title: "TODO"})
 });
}

Индексният изглед съдържа всички маркировки на страницата, тъй като ще бъде SPA, така че динамично ще сменям изгледите от страна на клиента.

Проблемът е, че препращам към скриптове, намиращи се в публичната папка и те не са намерени, получавам 404:

script src="public/app/app.js"></script>

Мисля, че е защото Express не знае как да сървърира файла. Уточних, че всичко в публичната папка трябва да са статични файлове:

   app.use(express.static(config.root + '/public'))  

Сега, ако не използвам ejs шаблон и ако използвам файл index.html в публичната папка вместо изглед, работи добре. Просто трябва да направя това вместо това:

 app.get('*', function(req, res) {
    res.sendfile('./public/index.html');
 });

Но искам да се възползвам от шаблона ejs за добавяне на пакети към страницата, вместо да добавям скриптове един по един.

И така, какво не е наред с моя код? Как мога да разреша този 404 на javascript файловете?


person Sam    schedule 30.01.2014    source източник
comment
Ако използвате статичен маршрут за статични файлове след динамичните маршрути, очаквате ли динамичните маршрути да не съвпадат? Не съм сигурен, че разбирам, но защо изобщо ще ви трябват маршрути, ако всичко е статично?   -  person adeneo    schedule 30.01.2014
comment
само javascript и други ресурси (css, изображения) са статични. Има само един маршрут до един и същи изглед (index.ejs), защото това е приложение с една страница. Въпреки това изглежда, че когато пренасочвам заявки към този един изглед, статични ресурси вече не се намират.   -  person Sam    schedule 30.01.2014
comment
Правилен ли е пътят за статичните ресурси? Просто получавате 404 в браузъра или имате грешки в конзолата на Node?   -  person adeneo    schedule 30.01.2014
comment
както chrome, така и node конзолите показват 404 на ресурса /public/app/app.js.   -  person Sam    schedule 30.01.2014
comment
Тогава пътят не е правилен, или вашите файлове не са там, или по някакъв начин сте сбъркали пътя, или статичният междинен софтуер не работи, трудно е да се каже.   -  person adeneo    schedule 30.01.2014


Отговори (1)


Схванах го. Пътят до файла със скрипта е неправилен. Трябва да е app/app.js вместо public/app/app.js

Мисля, че така работи статичният междинен софтуер.

person Sam    schedule 30.01.2014