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

Erro no carregamento da página, possível erro na injeção de componente.

O código esta exatamente igual ao da atividade, entretanto não carrega as fotos. O servidor está ativo e rodando normalmente na porta 3000, conforme previsto na atividade. Segue erro no console:

angular.min.js:87 XMLHttpRequest cannot load file:///v1/fotos. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
(anonymous) @ angular.min.js:87
n @ angular.min.js:82
f @ angular.min.js:80
(anonymous) @ angular.min.js:112
$eval @ angular.min.js:126
$digest @ angular.min.js:123
$apply @ angular.min.js:126
(anonymous) @ angular.min.js:17
e @ angular.min.js:36
d @ angular.min.js:17
uc @ angular.min.js:18
Jd @ angular.min.js:17
(anonymous) @ angular.min.js:250
a @ angular.min.js:164
c @ angular.min.js:32

Informações adicionais: 1 - O json carrega normalmente através da url "http://localhost:3000/v1/fotos" digitada diretamente no browser;

2 - Minha máquina é uma macbook pro late 2011. A falha ocorreu tanto no Chrome quanto no Safari;

3 - A instalação do node.js parece ter ocorrido normalmente e o servidor parece estar ok, mas tenho a impressão que o erro deve ser em função da configuração de algum parâmetro deste serviço;

4 - tenho tomado também o seguinte erro que não impede a execução normal: GET file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/%7B%7Bfoto.url%7D%7D net::ERR_FILE_NOT_FOUND index.html:26

5 - As imagens quando carregadas a partir da web ( a url do leão da web ) funcionaram normalmente apesar de apresentar este mesmo ultimo erro.

Pergunto, qual o problema e como corrigir meu código para continuar o curso?

28 respostas

Opa, de onde ta vindo esse endereço aqui => file:///v1/fotos ? Pq o problema ta com ele.. aí deveria ter algum http://endereço...

Fique tranquilo que mais de 3000 pessoas passaram dessa parte sem problema algum.

Poste o código de FotosController. Para ficar claro, nenhuma imagem é exibida?

Esclarecendo nenhuma imagem é exibida.

Tentei com estas duas versões de FotosController:

versão 1

angular.module('alurapic').controller('FotosController', function($scope, $http) {

    $scope.fotos = [];

    $http.get('/v1/fotos')
    .success(function(retorno) {
        console.log(retorno);
        $scope.fotos = retorno;
    })
    .error(function(erro) {
        console.log(erro);
    });

});

Nesta versão ocorre o erro mencionado  neste tópico, além do erro comum abaixo que acontece em ambos os casos:
Erro 1 - (outro erro que sempre acontece mas não interfere) Failed to load resource: net::ERR_FILE_NOT_FOUND  %7B%7Bfoto.url%7D%7D
`

versão 2:

angular.module('alurapic').controller('FotosController', function($scope, $http) {

    $scope.fotos = [];

    $http.get('http://localhost:3000/v1/fotos')
    .success(function(retorno) {
        console.log(retorno);
        $scope.fotos = retorno;
    })
    .error(function(erro) {
        console.log(erro);
    });

});


Observo que nesta segunda versão o erro muda para:
Erro 1 - (outro erro que sempre acontece mas não interfere) Failed to load resource: net::ERR_FILE_NOT_FOUND  %7B%7Bfoto.url%7D%7D

Erro 2 - (objeto deste fórum) - XMLHttpRequest cannot load http://localhost:3000/v1/fotos. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.   index.html:1 
fotos-controller.js:11 null

A versão 2 não vai funcionar porque o servidor disponibilizado não suporta CORS.

Compartilhe código do template que você exibe as fotos.

O erro failed to load resource e normal. O browser tenta baixar a imagem antes da angular expression ser avaliada.

index.js

<!-- public/index.html -->
<!DOCTYPE html>
<html lang="pt-br" ng-app="alurapic">
    <head>
        <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">
        <script src="js/lib/angular.min.js"></script>
        <script src="js/main.js"></script>
        <script src="js/controllers/fotos-controller.js"></script>
    </head>
    <body ng-controller="FotosController">
        <div class="container">
            <div class="jumbotron">
                <h1 class="text-center">Alurapic</h1>
            </div>
            <div class="row">

                <div class="panel panel-default" ng-repeat="foto in fotos">
                    <div class="panel-heading">
                        <h3 class="panel-title text-center">{{foto.titulo}}</h3>
                    </div>
                    <div class="panel-body">
                        <img class="img-responsive center-block" src="{{foto.url}}">
                    </div><!-- fim panel-body -->
                </div><!-- fim panel panel-default -->

            </div><!-- fim row -->
        </div><!-- fim container -->
    </body>
</html>
`

main.js

angular.module('alurapic', []);

Paths

1 - Caminho do projeto:
MacBook-Pro-de-kenard:alurapic kenardrs$ pwd
/Users/kenardrs/Documents/alura/curso-angular1x/alurapic
MacBook-Pro-de-kenard:alurapic kenardrs$ ls -la
total 176
drwxr-xr-x@ 12 kenardrs  staff    408 12 Jan 18:47 .
drwxr-xr-x   4 kenardrs  staff    136 11 Jan 15:17 ..
-rw-r--r--@  1 kenardrs  staff   8196 13 Jan 09:40 .DS_Store
drwxr-xr-x@ 12 kenardrs  staff    408 11 Jan 15:15 .git
-rw-r--r--@  1 kenardrs  staff     46 30 Abr  2015 .gitignore
drwxr-xr-x@  5 kenardrs  staff    170 11 Jan 15:41 app
drwxr-xr-x@  4 kenardrs  staff    136 24 Abr  2015 config
-rw-r--r--   1 kenardrs  staff  61582 12 Jan 18:47 data.db
drwxr-xr-x  81 kenardrs  staff   2754 11 Jan 15:25 node_modules
-rw-r--r--@  1 kenardrs  staff    338 30 Abr  2015 package.json
drwxr-xr-x@  7 kenardrs  staff    238 11 Jan 15:15 public
-rw-r--r--@  1 kenardrs  staff    232 24 Abr  2015 server.js
MacBook-Pro-de-kenard:alurapic kenardrs$ 

2 - Caminho do template (index.html)
MacBook-Pro-de-kenard:public kenardrs$ pwd
/Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public
MacBook-Pro-de-kenard:public kenardrs$ ls -la
total 32
drwxr-xr-x@  7 kenardrs  staff   238 11 Jan 15:15 .
drwxr-xr-x@ 12 kenardrs  staff   408 12 Jan 18:47 ..
-rw-r--r--@  1 kenardrs  staff  8196 13 Jan 09:40 .DS_Store
drwxr-xr-x@  5 kenardrs  staff   170 11 Nov  2015 css
-rw-r--r--@  1 kenardrs  staff  1306 12 Jan 18:10 index.html
drwxr-xr-x@  8 kenardrs  staff   272 11 Jan 16:27 js
drwxr-xr-x@  3 kenardrs  staff   102 15 Mai  2015 partials
MacBook-Pro-de-kenard:public kenardrs$ 

3 - Caminho do módulo principal (main.js)
MacBook-Pro-de-kenard:js kenardrs$ pwd
/Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js
MacBook-Pro-de-kenard:js kenardrs$ ls -la
total 32
drwxr-xr-x@ 8 kenardrs  staff   272 11 Jan 16:27 .
drwxr-xr-x@ 7 kenardrs  staff   238 11 Jan 15:15 ..
-rw-r--r--@ 1 kenardrs  staff  8196 11 Jan 16:54 .DS_Store
drwxr-xr-x@ 4 kenardrs  staff   136 11 Jan 16:22 controllers
drwxr-xr-x@ 3 kenardrs  staff   102 15 Mai  2015 directives
drwxr-xr-x@ 8 kenardrs  staff   272 11 Jan 16:27 lib
-rw-r--r--@ 1 kenardrs  staff    31 11 Jan 15:50 main.js
drwxr-xr-x@ 3 kenardrs  staff   102 15 Mai  2015 services
MacBook-Pro-de-kenard:js kenardrs$ 

4 - Caminho do modulo controller (fotos-controller.js)
MacBook-Pro-de-kenard:controllers kenardrs$ pwd
/Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/controllers
MacBook-Pro-de-kenard:controllers kenardrs$ ls -la
total 24
drwxr-xr-x@ 4 kenardrs  staff   136 11 Jan 16:22 .
drwxr-xr-x@ 8 kenardrs  staff   272 11 Jan 16:27 ..
-rw-r--r--@ 1 kenardrs  staff  6148 15 Mai  2015 .DS_Store
-rw-r--r--@ 1 kenardrs  staff   325 12 Jan 18:51 fotos-controller.js
MacBook-Pro-de-kenard:controllers kenardrs$

Você passou informações com códigos diferentes ao logo do tempo.

Faça um teste novamente usando como código do controller esse que você postou:

angular.module('alurapic').controller('FotosController', function($scope, $http) {

    $scope.fotos = [];

    $http.get('/v1/fotos')
    .success(function(retorno) {
        console.log(retorno);
        $scope.fotos = retorno;
    })
    .error(function(erro) {
        console.log(erro);
    });

});

Até porque, o seu erro original postado angular.min.js:87 XMLHttpRequest cannot load file:///v1/fotos. Cross origin requests are only supported tem relação com CORS, como disse.

Então, para eu descobrir onde você errou, eu preciso saber, em ordem cronológica:

1 - você fez o teste com o controller que eu indiquei, aliás, aquele usado por você?

2 - Se fez, nada é exibido no seu Chrome? Há mensagem de erro no console do chrome?

Faça esse procedimento novamente para mim. Aguardo seu retorno. Como disse mais de 3000 pessoas passaram sem problema algum dessa parte, você é o primeiro a reportar algo. Mas fique tranquilo que descobrimos o que é.

O erro Erro 1 - ) Failed to load resource: net::ERR_FILE_NOT_FOUND %7B%7Bfoto.url%7D%7Dé algo esperado. O browser tem uma política agressiva para carregar as imagens antes que o Angular avalie sua angular expression. Se isso te incomodar, na sua tag img troque de src para ng-src.

Aguardo seu retorno.

O único jeito deu forçar seu erro original é se eu fizer isso:

    $http.get('file:///v1/fotos')

Sendo assim, você fez isso em algum momento em seu código? É uma URL inválida. Mas veja a mensagem que resulta:

    XMLHttpRequest cannot load file:///v1/fotos. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

Veja que assim, o código não fica igual ao da atividade.

Aguardando seu novo teste. Aliás, não fica claro para mim qual é a versão final do seu código que você esta fazendo o teste. Então, se o erro continuar, pare imediatamente, e cole o código de index.html, fotos-controller.js e main.js novamente para eu ter um snapshot do código que você esta rodando.

Oi Kenard, no aguardo aqui.

Oi Flávio... obrigado pela a atenção e desculpa ocupar tanto seu tempo. Vou repetir todos os procedimentos desde o início utilizando os procedimentos e códigos originais... não duvido que os procedimentos funcione com os demais alunos, logo posso ter cometido algum erro sim, parte da aprendizagem. Desconfio de algum problema no meu arquivo do angular, então vou baixar o projeto e fazer do zero novamente. Como carrego o json normalmente via url o servidor parece está rodando normalmente. Logo posto os resultados aqui.

Kenard, não precisa fazer tudo do zero, apesar de ser uma boa ideia. Mas eu quero descobrir o que houve nesse processo até para poder dar um feedback para você melhor.

Se você postar o código que você tem.. depois de um teste....(sei que você já postou) ou se quiser compartilhar um zip do projeto eu posso olhar. Eu só preciso ter certeza de qual código e qual o último erro aconteceu no seu projeto.

É fácil você colocar a url de um zip do seu projeto?

E sobre tomar o tempo, relaxa, eu fico agoniado querendo resolver rápido para o aluno. Por isso fico fico cobrando aqui o código, etc.

Veja a possibilidade do zip.

No aguardo! OBS: até onde eu vi.. pelos últimos código não vejo erro algum no seu projeto e isso me deixa mais curioso ainda.

Você passando o zip do projeto, eu analiso código por código mais rápido.

Flavio, repeti o procedimento e deu o mesmo erro. Como te encaminho o zip do meu projeto?

Você pode hospedar em algum lugar e me passar o link. Dropbox.. e afins.

Códigos atuais, copiados e colados da atividade:

// índex.html

<!-- public/index.html -->
<!DOCTYPE html>
<html lang="pt-br" ng-app="alurapic">
    <head>
        <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">
        <script src="js/lib/angular.min.js"></script>
        <script src="js/main.js"></script>
        <script src="js/controllers/fotos-controller.js"></script>
    </head>
    <body ng-controller="FotosController">
        <div class="container">
            <div class="jumbotron">
                <h1 class="text-center">Alurapic</h1>
            </div>
            <div class="row">

                <div class="panel panel-default col-md-2" ng-repeat="foto in fotos">
                    <div class="panel-heading">
                        <h3 class="panel-title text-center">{{foto.titulo}}</h3>
                    </div>
                    <div class="panel-body">
                        <img class="img-responsive center-block" src="{{foto.url}}">
                    </div><!-- fim panel-body -->
                </div><!-- fim panel panel-default -->

            </div><!-- fim row -->
        </div><!-- fim container -->
    </body>
</html>


// main.js

angular.module('alurapic', []);


//controller-fotos.js

angular.module('alurapic').controller('FotosController', function($scope, $http) {

    $scope.fotos = [];

    $http.get('/v1/fotos')
    .success(function(retorno) {
        console.log(retorno);
        $scope.fotos = retorno; // não precisa fazer retorno.data
    })
    .error(function(erro) {
        console.log(erro);
    });

});


// console de erros do Safari

[Error] XMLHttpRequest cannot load file:///v1/fotos. Cross origin requests are only supported for HTTP.
    (função anônima) (angular.min.js:87)
    n (angular.min.js:82:444)
    (função anônima) (angular.min.js:80:176)
    (função anônima) (angular.min.js:112:115)
    $digest (angular.min.js:123:112)
    $apply (angular.min.js:126:301)
    (função anônima) (angular.min.js:17:486)
    d (angular.min.js:17:407)
    Jd (angular.min.js:17)
    (função anônima) (angular.min.js:250:432)
    a (angular.min.js:164:285)
    c (angular.min.js:32:394)
[Error] Error:  A network error occurred.
send@[native code]
file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:87:41
n@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:82:443
file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:80:175
file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:112:114
$digest@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:123:111
$apply@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:126:300
file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:17:485
d@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:17:406
Jd@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:17:2
file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:250:431
a@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:164:284
c@file:///Users/kenardrs/Documents/alura/curso-angular1x/alurapic/public/js/lib/angular.min.js:32:393
    (função anônima) (angular.min.js:76:251)
    (função anônima) (angular.min.js:112:198)
    $digest (angular.min.js:123:112)
    $apply (angular.min.js:126:301)
    (função anônima) (angular.min.js:17:486)
    d (angular.min.js:17:407)
    Jd (angular.min.js:17)
    (função anônima) (angular.min.js:250:432)
    a (angular.min.js:164:285)
    c (angular.min.js:32:394)
[Error] Failed to load resource: O URL solicitado não foi encontrado neste servidor. ({{foto.url}}, line 0)
[Error] Failed to load resource: O URL solicitado não foi encontrado neste servidor. (angular.min.js.map, line 0)

Você testou no Safari. O que você esta usando é tecnologia preview ou é o safari estável? Se você abre no Chrome, funciona?

Eu testei no meu safari Versão 10.0.2 (12602.3.12.0.1) e esta funcionando. Olhando seu código, o $http esta correto, mas esta ocorrendo um erro do xmlhttprequest que é o objeto usado por debaixo dos panos por $http para realizar as requisições. De alguma forma, que não faço ideia ainda qual, ele esta mapeando para um arquivo em disco no seu computador e não para a URL da API.

O mais correto é você me enviar o zip do projeto. Pode ser que haja algum caractere inválido no seu html ou script.... porque sem o zip.. sem o projeto como esta.... fica difícil entender o que esta acontecendo com sua máquina.

Eu uso Mac e não tenho esse problema.

Aliás, se eu pego seu zip e funciona na minha máquina, já podemos identificar que é um problema no seu sistema e não no projeto.

Incluí no arquivo duas capturas de tela com as versões do Chrome e do Safari:

https://dl.dropboxusercontent.com/u/67569159/alurapick.zip

Oi Kenard só vi agora. Assim que baixar eu investigo. Seu caso é bem atípico e estou curioso em descobrir o que é.

Peguei seu projeto, descompactei e dei npm start, acessei o endereço localhost:3000 e tudo funcionou perfeitamente. As imagens foram exibidas. O problema é realmente em sua máquina.

Agora você precisa verificar:

1 - você bloqueou algo via firewall ?

2 - você tem plugins instalados nos navegadores?

3 - Seu MAC é original ou é um hacktosh?

Não faço a menor ideia porque seu sistema operacional, via brower, traduz uma requisição válida para o caminho de um sistema de arquivos.

Por fim, só para curiosidade. Qual versão do Node.js você tem instalada?

Testei seu projeto no Mac, Windows e Linux.

Bom, e que posso tentar fazer para que você possa acompanhar o curso, é alterar o server para que aceite trabalhar com URL absoluta e não relativa. Nem sei se isso vai resolver, mas é uma tentativa. Mas você precisa resolver isso, porque pode atrapalhar vários cursos da Alura.

No próximo post vou te passar o código que habilita CORS no seu servidor.

Você vai substituir o conteúdo do arquivo alurapic/config/express.js pelo seguinte conteúdo:

var express = require('express')
    ,app = express()
    ,bodyParser = require('body-parser')
    ,routes = require('../app/routes');

app.use(express.static('./public'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
  next();
});

routes(app);

module.exports = app;

Depois, em todo lugar que tiver o caminho relativo /v1/fotos você vai usar http://localhost:3000/v1/fotos (tem que ter http na frente)

Isso é uma solução paliativa para um problema muito mais sério do seu sistema.

Aguardo seu retorno para ver se funcionou.

OBS: há uma pasta alurapic dentro de alurapic. Uma pasta vazia.. mas apague essa pasta quando for fazer um teste ai... sei lá.. como tá tudo estranho vai que...

Agora você precisa verificar:

1 - você bloqueou algo via firewall ? Não, uso a configuração padrão do mac.

2 - você tem plugins instalados nos navegadores? Não, uso a configuração padrão do mac.

3 - Seu MAC é original ou é um hacktosh? Como disse é original, eu mesmo comprei na Apple de Orlando .

Por fim, só para curiosidade. Qual versão do Node.js você tem instalada? Testei nas versões nas versões 6.9.4 LTS e 7.4.0, ambas de 64 bits para Mac OS pelo instalador do próprio node (não usei o homebrew para instalar).

Em tempo, concordo que pode ser algum detalhe de configuração de algum recurso em minha máquina, entretanto nunca tive problema em nenhum dos cursos da Alura usando meu mac. Não costumo promover grandes alterações na minha máquina, não uso soluções sem licença ou de sites externos. Acho inclusive que meu passo mais ousado neste sentido foi instalar o node.js, que confesso não me animou muito pq é algo que não domino e não sei o que instala ou altera na minha máquina, mas o importante é estudar e confio muito na Alura. Se verificar no meu histórico fiz vários cursos e nunca tive problema. Vou tentar fazer a alteração que vc sugeriu e testar novamente e vou continuar pesquisando este problema peculiar. Obrigado pela ajuda.

Funcionou essa solução paliativa que dei?

Eu uso Mac também, mesmo modelo que o seu. Só não atualizei para o sierra.

Seu caso é atípico. Nunca vi isso acontecer, mas como disse, pelo erro reportado por você , seu xmlhttp object esta procurando no file system o endereço relativo.

Tem como postar a mensagem de erro nais uma vez com o mesmo zip que você compartilhou ? A que aparece no Chrome.

Eu quero muito descobrir... Mas oara isso vamos ter que trocar mensagens aqui. Se minha solução paliativa funcionar você poderá chegar até o final do curso. É com isso que estou preocupado. Não quero que desanime ou desista.

Sendo assim, fique tranquilo que não é algo que você fez de errado, você é refém de um problema a ser descoberto.

solução!

Flavio, consegui resolver... suspeitava que tinha alguma idiotice minha muito obvia envolvida... tão obvia que vc não teria como inferir.

1 - O erro do xmlhttp ocorria porque eu estava carregando index.html direto do disco, invés de chamar via servidor local node.js (localhost:3000). Mesmo sendo obvio, recomendo que inclua esta observação na atividade para que o aluno que esta sendo apresentado ao node, como eu, não carregue o arquivo diretamente do disco e sim via endereço/porta do servidor local .

2 - Agora o único incomodo são os warnings do bootstrap que estou tomando no console, mas consigo continuar o curso independente deles:

[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap-theme.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap.min.css, line 5)
[Warning] Unexpected CSS token: : (bootstrap.min.css, line 5)

Valeu pela força e desculpa fazer vc perder tempo com minha topeirada!

Eu que agradeço. Eu tava sem dornir já pois queria muito resolver seu problema.

Pelo contrário, fico contente de você mesmo ter descoberto o problema.

Agora é só continuar com os estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software