2016-05-03 3 views
0

У меня есть приложение Node/Express. В этом приложении у меня установлены следующие маршруты:Узел - Экспресс - Рекурсивный маршрут

app.use('/article/:title/demo', function(req, res) { 
    console.log('load the demo view'); 
    res.render('article/demo', { title: req.params.title }); 
});  

app.use('/article/:title', function(req, res) { 
    console.log('view the article'); 
    res.render('article/content', { title: req.params.title }); 
}); 

Моя статья/файл содержимого загружается штрафом. Однако моя статья/демонстрация вызывает рекурсивную нагрузку. Я не понимаю, почему. Мой /article/demo.html файл выглядит следующим образом:

<html> 
<body> 
    <article> 
<iframe style="width:100%; height:800px; overflow-y:scroll;" src="./demo/main.html"></iframe> 
    </article>  
</body> 
</html> 

У меня есть файл main.html, который существует. Однако это не получается. Когда я смотрю на окно консоли, я замечаю, что load the demo view начинает печатать несколько раз, пока я покидаю окно браузера. Я действительно вижу, что файл статьи/демо загружается внутри себя. Однако я никогда не вижу содержимого main.html. Я не уверен, как исправить это. Любая помощь будет оценена по достоинству.

+0

Действительно ли ваш демонстрационный пример demo.html? – Sumeet

+0

Вы используете муравьиный движок, подобный jade или ejs? @ user687554 – Sumeet

+0

@Sumseet - Да. Demo.html корректно выполняет рендеринг. Он содержит iframe. Это url, на который ссылаются в iframe, который неправильно отображается. – user687554

ответ

0

View - это рендеринг вашего файла правильно, но не доступен для доступа к main.html, поскольку он недоступен в статической папке. Относительная загрузка пути не будет работать, вам нужно иметь статическую папку, как показано ниже. Поместите в него свой файл.

app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public')));// Load static files

0

Ваш /article/:title/demo подбирается, когда браузер запрашивает у сервера ./demo/main.html. Вероятно, это не правильный путь для main.html. Это в значительной степени зависит от того, как вы настроили загрузку статического актива.

+0

Я понимаю это. Однако как настроить маршрут, чтобы можно было загружать статические файлы в этом маршруте? – user687554

+1

Не используйте относительные пути (удалите точку из './Demo/main.html'). Используйте абсолютные пути, например. /demo/main.html и настроить экспресс для загрузки файлов из папки, в которой находится ваш статический файл. http://expressjs.com/ru/starter/static-files.html –

Смежные вопросы