Comment héberger une application AngularJS dans Heroku en utilisant Node.js SANS utiliser yeoman?

J’essaie de pousser une construction Hello World avec AngularJS dans Heroku à l’aide de Node.js. MAIS avec plusieurs vues (partielles).

J’ai d’abord déployé Hello World sans utiliser ngRoute, ce qui signifie: sans partiels. C’était bien et lisse. Ensuite, j’ai essayé de pousser 2 partiels simples. Mais je crois que le problème est d’héberger l’application tout en demandant des partials. Je sais que ce n’est pas la bonne approche et je veux vos conseils.

Ceci est mon index.html:

       
angular.module('main', ['ngRoute']) .config(['$routeProvider', '$http', function ($routeProvider, $http){ console.log('hola'); $routeProvider .when('/', { resolve: **??? I sortinged with templateUrl but did not work either** ,controller: 'indexCtrl' }) .when('/second', { resolve: **???** ,controller: 'secondCtrl' }) .otherwise({ redirectTo: '/' }); }]) .controller('indexCtrl', ['$scope', function ($scope){ $scope.helloWorld = "Hello World"; }]) .controller('secondCtrl', ['$scope', function ($scope){ $scope.helloWorld = "World Hello"; }]);

Partielle ‘templates / second.html’

 

{{ helloWorld }}

Go to First

Partielle ‘templates / index.html’

 

{{ helloWorld }}

Go to Second

Mon application express:

 var express = require('express'), app = express(); app.set('view engine', 'html'); app.get('/', function(req, res) { res.sendfile('index.html', {root: __dirname }) }); app.get('/index', function (req, res){ res.sendfile('templates/index.html', {root: __dirname }) }); app.get('/second', function (req, res){ res.sendfile('templates/second.html', {root: __dirname }) }); var server = app.listen(process.env.PORT || 80); 

Et évidemment, Procfile:

 web: node index.js 

Tous les tutoriels que j’ai trouvés jusqu’à présent utilisent Yeoman mais je ne veux pas utiliser Yeoman ni aucun autre outil d’échafaudage (si c’est ce dont il s’agit).

Q: Est-il possible d’héberger une application AngularJS dans la même application Heroku où je stocke les partiels? Si oui, qu’est-ce que je fais mal? Si non, quelle est la meilleure approche?

Eh bien, je ne sais pas pourquoi j’ai eu un vote négatif. Mais de toute façon, j’ai trouvé mon problème en regardant cet exemple.

Le problème réel était que je ne rendais pas “public” l’annuaire avec express:

 app.use(express.static(__dirname)); 

Voici le monde bonjour

index.html

        

Serveur / index.js

 var express = require('express'), app = express(); app.use(express.static(__dirname)); app.get('/', function(req, res) { res.sendfile('index.html', {root: __dirname }) }); var server = app.listen(process.env.PORT || 80); 

Procfile

 web: node index.js 

templates / index.html

 

{{ helloWorld }}

Go to Second

templates / second.html

 

{{ helloWorld }}

Go to First

J’espère que ça aidera quelqu’un.

Pour répondre à ma question. Oui, c’est possible, ce que je faisais mal, c’est de ne pas rendre les modèles (fichiers) accessibles. Si vous souhaitez renforcer la sécurité sur ce qui peut être accessible, vous pouvez créer un dossier appelé, par exemple, public. Puis rendez ce répertoire statique:

 app.use(express.static(__dirname + '/public')); 

vous pouvez également avoir différents itinéraires pour communiquer avec votre application, même de manière REST. Comme:

 app.get('/users', function(req, res) { res.json({...}); });