4
respostas

Aplicação está dando erro

Tenho tido uma mensagem de erro ao executar a aplicação. Feito todas as mudanças feitas em curso, o erro que agora venho recebendo no terminal é:

Error: (SystemJS) ReferenceError: ListaNegociacoes is not defined
        at Function.create (http://localhost:3000/js/app/services/ProxyFactory.js:50:46)
        at new Bind (http://localhost:3000/js/app/helpers/Bind.js:26:42)
        at new NegociacaoController (http://localhost:3000/js/app/controllers/NegociacaoController.js:61:46)
        at execute (http://localhost:3000/js/app/boot.js:12:30)
    Error loading http://localhost:3000/js/app/boot.js

Sendo que eu não estava tendo esse erro, e a aplicação estava perfeita. Já tentei de todas as formas mencionadas nas mensagens mas não consigo solucionar o problema. Alguma idéia do que pode estar acontecendo?

Obrigado

4 respostas

Segue código boot.js

import {currentInstance} from './controllers/NegociacaoController';
import {} from './polyfill/fetch';

let negociacaoController = currentInstance();

document.querySelector('.form').onsubmit negociacaoController.adiciona.bind(negociacaoController);
document.querySelector('[type=button]').onclick = negociacaoController.apaga.bind(negociacaoController);

Segue também código ListaNegociacoes.

export class ListaNegociacoes {

    constructor() {

        this._negociacoes = [];
    }

    adiciona(negociacao) {

        this._negociacoes.push(negociacao);
    }

    get negociacoes() {

        return [].concat(this._negociacoes);
    }

    esvazia() {

        this._negociacoes = [];
    }

    get volumeTotal() {

        return this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
     }

    ordena(criterio) {

        this._negociacoes.sort(criterio);        
    }

    inverteOrdem() {
        this._negociacoes.reverse();
    }
}

E também o código do index.html

<script src="node_modules/systemjs/dist/system.js"></script>
    <script>
        System.defaultJSExtensions = true; // permite omitir a extensão .js dos imports
        System.import('js/app/boot').catch(function(err){ 
            console.error(err);
        });
    </script>

Olá Victor, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Testando o código enviado em conjunto com o código da aula, há apenas um ponto que será necessário realizar uma modificação, no arquivo boot.js na query para selecionar o id .form será necessário adicionar a atribuição (=) a query, como abaixo:

document.querySelector('.form').onsubmit = negociacaoController.adiciona.bind(negociacaoController);

O erro, ReferenceError: ListaNegociacoes is not defined ocorre quando você está tentando criar uma instância de uma classe ou chamar uma função que não foi definida. No seu caso, o erro está apontando para o fato de que a classe ListaNegociacoes não foi definida. Testando o código compartilhado em conjunto com o código da aula, o mesmo funcionou como esperado.

Para corrigir esse erro, peço que verifique se a classe ListaNegociacoes está sendo importada corretamente nos arquivos que fazem o seu uso no projeto. Certifique-se também de que a variável que você está usando para armazenar uma instância da classe seja definida corretamente.

Se o problema persistir, verifique se não há erros de digitação no nome da classe ou nas importações. Certifique-se também de que todos os arquivos JavaScript estão sendo carregados corretamente e que não há conflitos de nomes de variáveis ou funções.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons 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