Я не могу понять это для жизни меня. Я использую Node, Express, Angular и ui.route. То, что я пытаюсь выполнить, следующее:
index.html
в качестве мастераsome.html
как частичные Я настраиваю приложение на использование ejs
вместо jade
(не знаю, имеет ли это значение вообще)? Ошибка, которую я получаю, заключается в том, что он не может найти localhost:3000/views/partial-home.html
404, я пробовал все типы разных путей в моей маршрутизации,
(function(){
var app = angular.module('routerApp', ['ui.router']);
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/about');
$stateProvider
.state('home-about', {
url: '/home-about',
templateUrl: '/views/partial-home.html'
})
.state('about', {
});
});
}());
У меня нет ничего особенного в моем файле app.js
для обработки html или в моем route/index.js
, в настоящее время я думаю, что он также использует index.ejs
. Какие шаги мне не хватает в использовании html и почему ошибка может быть partial-home.html
с этим, не обнаруживая partial-home.html
//routes/index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
Есть сообщения по этой теме, но ни один из них не суммирует мои две проблемы с использованием html файлов и почему 404. Цените всю помощь, которую я могу получить. Благодарю!
Я получил решение. Это только одна из тех ошибок. Я искал свой app.js
, у меня была вся правильная маршрутизация, так как Арбель помогал мне.
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
Поэтому я искал файл, и он ударил меня, когда я увидел эту строку, верно, что это статический ресурс.
app.use(express.static(path.join(__dirname, 'public')));
Поэтому я помещал свои html файлы в public/partials
и это все. Теперь мой route
выглядит так
$stateProvider
.state('home-about', {
url: '/home-about',
templateUrl: '/partials/partial-home.html'
});
Вам все равно нужно "подключить" этот router
к app
.
app.use('/', router);
router
будет относиться к пути, к которому вы его монтируете, в этом случае root /
. Вы можете подключить его к любому пути, и router
будет относиться к этому пути. например
app.use('/bar', router);
И ваш мини-приложение вашего router
будет вызываться, когда приложение get
(или любой другой метод HTTP) /bar/
path.
Эй, вы можете настроить механизм просмотра приложений как html, чтобы он мог отображать html файл.
var ejs = require ("ejs");
app.set('views',//путь к папке просмотров);
app.engine('html', ejs.renderFile);
app.set('view engine', 'html');
app.js
узлов для всех маршрутов, которые я установил в моей конфигурацииui.route
?/views/partial-home.html
будет корректным при подключенииrouter
к/
(имеется в виду, например, localhost: 3000 / views /partal- home.html - правильный адрес частичного), то нет, поскольку путь правильный , но если части находятся в другом месте, вам понадобится другой обработчик запросов для этого другого пути.