2016-03-31 3 views
0

Я не могу понять это для жизни меня. Я использую Node, Express, Angular и ui.route. То, что я пытаюсь выполнить следующее,ui route, node, express, 404 html files

  • имеет index.html как мастер
  • имеет some.html как обертоны

I Настройки приложение для использования 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

//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. Цените всю помощь, которую я могу получить. Благодаря!

ответ

0

Я получил решение. Это всего лишь одна из тех ошибок. Я смотрел на мой 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' 
     }); 
1

Вам все еще нужно «установить» это router в app.

app.use('/', router); 

The router будет относительно пути, который вы смонтировать его, в этом случае корень /. Вы можете установить его на любой путь, и router будет относиться к этому пути. например

app.use('/bar', router); 

И ваш router 'мини-приложение' будет вызываться, когда приложение get s (или любой другой метод HTTP) /bar/ путь.

+0

О, я полностью пропустил это. Просто я понял это. Мне нужно добавить маршруты в файле node.js 'nodes для всех маршрутов, установленных в моей конфигурации' ui.route'? –

+0

Если, скажем, '/ views/partial-home.html' будет корректно, когда вы монтируете' router' в '/' (что означает, например, http: // localhost: 3000/views/partial-home.html - правильный адрес частичный), то нет, потому что путь правильный, но если частичные расположены в другом месте, вам понадобится другой обработчик запросов для этого другого пути. – Arbel

+0

Я не понимаю, почему он не работает для меня. Мои html-файлы находятся в '/ views /', я в значительной степени использую 'express install' прямо из приложения gate, за исключением того, что я использую' ui.router', все работает отлично, когда я использую '< script type = "ng-template"> ', это просто делает эти файлы, которые дают мне 404 –

0

Эй, вы можете настроить механизм просмотра приложения как html, чтобы он мог отображать html-файл.

var ejs = require ("ejs");

app.set ('views', // путь к папке видов);

app.engine ('html', ejs.renderFile);

app.set ('view engine', 'html');