5
respostas

Erro no código do curso jQuery parte 2

//frase.js

$('#botao-frase').click(fraseAleatoria);

function fraseAleatoria(){ 
    $.get("http://vm.desenvolvimento.com/jQueryAvancado/alura-typer/servidor/app/api/frases.js", trocaFraseAleatoria)
}   


function trocaFraseAleatoria (data){
    var frase = $(".frase");
    frase.text(data[0].texto);
}


//frases.js

var api = {};

var frases = [
    {_id: 0, texto:'Alura, Cursos online de tecnologia que reinventam sua carreira.', tempo: 15 },
    {_id: 1, texto:'Debuggers não consertam erros, apenas os exibem em slow motion.',tempo: 8 },
    {_id: 2, texto:'Caelum, Ensino e Inovação.', tempo: 5 },
    {_id: 3, texto:'Existem duas tarefas difíceis na Ciência da Computação: invalidação de cache e nomear as coisas.', tempo: 15 },
    {_id: 4, texto:'Ciência da computação é tão sobre computadores quanto astronomia é sobre telescópios.', tempo: 15 },
    {_id: 5, texto:'Na minha máquina funciona.', tempo: 5 },
    {_id: 6, texto:'Hardware é o que você chuta, software é o que você xinga.', tempo: 12 },
    {_id: 7, texto:'Software em funcionamento mais que documentação abrangente.', tempo: 10 },
    {_id: 8, texto:'Iterar é humano, recursão é divino.', tempo: 7},
    {_id: 9, texto:'Existem três jeitos de desenvolver software. O jeito certo, o jeito errado e o meu jeito, que é igual o jeito errado só que mais rápido.', tempo: 20},

    ];

api.lista = function(req, res) {

    setTimeout(function(){
        if(req.query.id) return res.json(frases[req.query.id]);

        res.json(frases);
    },1500);

};

module.exports = api;

Na hora que clico no botão #botao-frase não se altera a frase que supostamente o code alteraria e no console o seguinte erro é demonstrado:

  • ReferenceError: module is not defined: dando erro no arquivo 'frases.js' na linha 27 com o seguinte code "module.exports = api;"

Alguém pode me ajudar neste problema?

5 respostas

Thales, boa tarde!

A declaração dos exports só podem ser feitas na parte de cima do código.

Presumimos que essa limitação existe para tornar mais fácil a vida dos interpretadores quando vão identificar os módulos, mas, olhando bem, é uma limitação bem válida, porque não há muitas boas razões para que possamos definir exports dinâmicos dentro das funções da nossa API.

Espero ter ajudado e bons estudos!

Felipe, mesmo declarando o exports na parte superior do código, ele continua não funcionando, não sei o que aconteceu, mas o erro no console foi alterado para outro (antes de eu ter modificado o exports para a parte superior).

A mensagem que aparece agora é:

Requisição cross-origin bloqueada: A política de mesma origem (Same Origin Policy) impede a leitura do recurso remoto em http://vm.desenvolvimento.com/jQueryAvancado/alura-typer/servidor/app/api/frases.js. (Motivo: o cabeçalho CORS 'Access-Control-Allow-Origin' não está presente).

(Não estou usando um Wampp ou Xampp como servidor, e sim um ubuntu server rodando em minha VM, mas do mesmo jeito, era para funcionar)

Já tentei alterar o código encontrado na pasta servidor/config/express.js

No caso eu tirei o comentário encontrado no código seguinte:

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");
    next();
});

Mesmo assim, não funciona =(

Thales, boa tarde!

Tente reiniciar os servidor, ele pode estar rodando com as configurações antigas.

Caso isso não ajude basta dizer! Estamos aqui para ajudar!

Felipe, bom dia!

Já havia reiniciado o servidor em todos os testes que fiz.

No caso o servidor que eu uso é o Nginx.

Mesmo assim o code não roda

Thales, bom dia!

Você poderia disponibilizar seu código para que eu possa verificar o que está ocorrendo?