2015-03-30 1 views
0

Je travaille sur une application angulaire/cordova, dans lequel, après la suppression # de l'URL et rafraîchissante, les pages ne reçoivent pas les cheveux et je continue à obtenir l'erreur comme -Comment configurer des itinéraires de Node.js dans une application cordova

Cannot GET /home/index 

Comment est-ce que je peux configurer le serveur node.js pour renvoyer index.html pour n'importe quelle route incomparable?

Répondre

0

Avec express il devrait être assez simple:

app.get('/foo', function (req, res) { 
    res.render('foo'); 
}); 
app.get('/:bar', _checkAuth, function (req, res) { 
    res.render(req.params.bar); 
}); 
app.get('*', function (req, res) { 
    res.render('index'); 
}); 
+0

Où est-ce que cela doit être inclus? Actuellement, mon application Cordova fonctionne sur le serveur de noeud. Il a un dossier de crochets pour configurer de tels arrangements mais je ne suis pas entièrement sûr. – Sam

+0

Il s'agit du code côté serveur. Dans le cas où vous utilisez express, jetez un oeil ici: http://expressjs.com/guide/routing.html – borisdiakur

+0

Je n'utilise pas express. Mine est une application ionique dans laquelle le routage est pris en charge par angulaire et s'exécute sur nodejs par défaut. S'il vous plaît jeter un oeil à ma question précédente sur ce sujet pour lequel j'ai obtenu une réponse similaire, mais je ne sais pas où l'implémenter - http://stackoverflow.com/questions/29343436/html5mode-refreshing-the-angularjs-page-issue – Sam

0

Tout d'abord, vous ne devriez pas vous soucier de l'édition possible d'URL, car un utilisateur ne peut pas modifier les URL en utilisant l'application. Mais oui, si vous fournissez une mauvaise URL sur un tag anchor, $urlRouterProvider.otherwise('/') le fera pour vous.

myApp.config(function($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/') 

    $stateProvider.state('home', { 
     url: '/', 
     controller: 'homeCtrl', 
    }) 

    $stateProvider.state('p1', { 
     url: '/p1', 
     templateUrl: "templates/p1.html", 
     controller: "p1Ctrl" 
    }) 
    ... 
}) 

Puis-je savoir quel est le contenu de votre page index.html?

+0

Je prévois d'utiliser la même application sur les ordinateurs de bureau, de sorte que les utilisateurs peuvent partager des liens et être dirigés vers cette page elle-même. index.html est le point d'entrée par défaut habituel dans mon application avec la tête, les balises de corps et les références etc. – Sam

+0

Le problème n'est pas avec angulaire mais avec la réécriture d'url. Donc je suppose que les changements doivent être faits au serveur. – Sam

+0

Je ne sais pas pourquoi cela ne fonctionnerait pas. Sauf si vous avez fait des changements avec votre Node? Et juste une opinion, idéalement, tout ce qui ne change pas dans votre application doit aller dans index.html, et ensuite tous les templates iraient dans la 'ion-nav-view'. Donc, s'il y a une entrée invalide d'URL, vous pourriez plutôt amener un utilisateur à un autre modèle indiquant "404 page non trouvée" ou quelque chose comme ça. – Keval