Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Ativação do html5Mode no node.js

Gostaria de saber se o node.js fornecido já veio com a opção html5Mode ativada, pois não conseguir acessar as partials sem hash '#' no caminho. Ex: http://localhost:3000/#/fotos/

5 respostas

Marcelo, não vem ativado... tem que habilitar nas routes incluindo as seguintes linhas no /routes/index.js (dentro do module.exports)

    app.all('/*', function(req, res) {
        res.sendFile(path.resolve('public/index.html'));
    });

No curso de Angular 1.X o servidor disponibilizado já esta preparado para lidar com o HTML5MODE sim. Talvez o Thiago tenha se confundindo com outro curso ( do de MEAN, que não vem habilitado).

Se não funcionou no seu projeto algum erro tem. Compartilhe o código do seu main.js e do index.html.

index.html

<!DOCTYPE html>
<html lang="pt-br" ng-app="alurapic">
    <head>
        <base href="/">
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <title>Alurapic</title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <link rel="stylesheet" href="css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="css/efeitos.css">
        <script src="js/lib/angular.min.js"></script>
        <script src="js/lib/angular-animate.min.js"></script>
        <script src="js/lib/angular-route.min.js"></script>
        <script src="js/main.js"></script>
        <script src="js/controllers/fotos-controller.js"></script>
        <script src="js/directives/minhas-diretivas.js"></script>        
    </head>
    <body>
        <div class="container">
            <ng-view></ng-view>
        </div>
    </body>
</html>

//main.js

// Criando novo módulo alurapic e adicionando diretivas em seguida
angular.module('alurapic', ['minhasDiretivas', 'ngAnimate','ngRoute'])
    .config(function($routeProvider) {

        //Possibilita remoção do hash # para definição de rotas, deve ser ativada no servidor        
        $locationProvider.html5Mode(true);

        $routeProvider.when('/fotos/', {
            templateUrl: 'partials/principal.html',
            controller: 'FotosController'
        });

        $routeProvider.when('/fotos/new', {
            templateUrl: 'partials/new.html',
            controller: 'FotosController'
        });
    });

Ficou faltando solicitar ao AngularJs a injeção do $locationProvider. Falha minha....

Obrigado.

solução!

Tranquilo Marcelo! Tipo, sempre que tiver algo de estranho, dá uma olhada no console do Chrome para ver se não tem nenhuma mensagem de erro.

Abração!