2016-03-31 15 views
0

Ich kann das nicht für das leben von mir herausfinden. Ich benutze Node, Express, Angular und ui.route. Was ich versuche folgendes zu tun ist,ui route, node, express, 404 html-dateien

  • haben index.html als Master
  • some.html als partials

ich Setup die Anwendung ejs zu verwenden, anstatt jade (weiß nicht, wenn das überhaupt zählt)? Der Fehler Ich erhalte, ist, dass es nicht localhost:3000/views/partial-home.html 404 finden kann, habe ich versucht, alle Arten von verschiedenen Pfaden in meinem Routing,

(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', { 

      }); 
     }); 
    }()); 

Ich habe nichts besonders in meiner app.js Datei html oder in zu handhaben meine route/index.js, derzeit denke ich, dass es auch die index.ejs verwendet. Welche Schritte sind ich im Umgang mit HTML fehle und warum der Fehler nicht mit ihm zu finden, die 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; 

Es gibt Beiträge zu diesem Thema sein könnte, aber keine Summen irgendwie meine zwei Probleme bei der Verwendung von HTML-Dateien und warum die 404 auf. Schätze alle Hilfe, die ich bekommen kann. Vielen Dank!

Antwort

0

Ich habe die Lösung. Es ist nur einer dieser Fehler. Ich schaute in meine app.js, ich hatte das ganze Routing korrekt, wie Arbel mir half.

Also schaute ich mir die Datei an und sie traf mich, als ich diese Zeile sah, richtig, dass dies eine statische Ressource ist.

app.use(express.static(path.join(__dirname, 'public'))); 

Also habe ich meine HTML-Dateien in public/partials und das war es. Nun meine route aussehen wie dieses

$stateProvider 
     .state('home-about', { 
      url: '/home-about', 
      templateUrl: '/partials/partial-home.html' 
     }); 
1

Sie müssen diese router noch an die app 'mounten'.

app.use('/', router); 

Die router wird auf den Pfad relativ sein, dass Sie es montieren zu, in diesem Fall die Wurzel /. Sie können es an jeden Pfad mounten und router wird relativ zu diesem Pfad sein. z.B.

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

Und Ihr router 'Mini-App' wird aufgerufen, wenn die Anwendung get s (oder eine andere HTTP-Methode) /bar/ Pfad.

+0

Oh ich total verfehlt das. Nur damit ich das klar habe. Ich muss Routen in der Knoten 'app.js' Datei für alle Routen hinzufügen, die ich in meiner' ui.route' Konfiguration eingestellt habe? –

+0

Wenn wir sagen "/ views/partial-home.html" ist korrekt, wenn Sie 'router' an'/'mounten (zB http: // localhost: 3000/views/partial-home.html ist die korrekte Adresse von die partielle) dann nein, weil der Pfad korrekt ist, aber wenn die Partialtöne an anderer Stelle lokalisiert sind, dann benötigen Sie einen anderen Request-Handler für diesen anderen Pfad. – Arbel

+0

Ich verstehe nicht, warum es nicht für mich funktioniert. Meine HTML-Dateien befinden sich in '/ views /', ich benutze so ziemlich eine 'Express-Installation' direkt in der Gate-App, außer dass ich 'ui.router' verwende, alles funktioniert gut, wenn ich' ', es macht nur diese Dateien, die mir 404 gibt –

0

Hey, Sie können Ihre App-View-Engine als HTML festlegen, so dass es HTML-Datei rendern kann.

var ejs = require ("ejs");

app.set ('Ansichten', // Ordnerpfad der Ansichten);

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

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