Depuração do WebStorm Configuração do ambiente de engenharia de aplicativos Nodejs Pomelo

Endereço original : http://nodejs.netease.com/topic/515251b97f53b3d3330025c7

Usar um IDE útil para desenvolver aplicativos pode tornar nosso trabalho mais eficiente. A depuração nos permite localizar com precisão os bugs e encontrar problemas.

Este artigo descreve como usar  o WebStorm,  um IDE JavaScript de nível monstruoso, para depurar  o Chat de Pomelo .

Se você preferir   outros IDEs como o Eclipse , espero que este artigo também possa ser útil.

prefácio

* Em primeiro lugar, precisamos saber que o aplicativo NodeJS pode adicionar --debug=5858parâmetros ao comando em execução, o que pode fazer com que o programa NodeJS escute a 5858porta local e habilite o modo de depuração.

  • Em segundo lugar, o princípio operacional do Pomelo é: pomelo startquando o servidor é iniciado master, ele primeiro lê o arquivo de configuração e, em seguida, inicia game-server/config/servers.jsoncada processo do servidor configurado no arquivo. idEntre eles, , e assim por diante host, portestão os parâmetros de inicialização do subservidor, e esses parâmetros serão colocados app.jsatrás da linha de comando de inicialização.

  • Mais uma vez, os designers do Pomelo inicialmente consideraram a maneira fácil de adicionar parâmetros diretamente antes e nodedepois app.js: no arquivo de configuração do servidor, "args": " 你想要的参数 "depois que a entrada de configuração é inserida, ele pode ser executado com os parâmetros que você especificar node.

Modifique a configuração para iniciar o servidor com modo de depuração

1. Abra o arquivo

abra game-server/config/servers.json. Para facilitar o desenvolvimento, reduzimos o número de servidores para 1 instância em execução por função. Então você verá:

Configuração simplificada do servidor padrão

2. Modifique e salve

Ficamos gateinteressados ​​em saber como funciona a distribuição de carga do servidor e queríamos depurá-la. Neste momento, só precisamos inserir o seguinte código no {"id": "gate-server-1", ...final da linha, }antes das chaves , "args": " --debug=32312 ". Faça com que geteo grupo de configuração do servidor fique assim:

configuração de depuração do servidor de portão

Quando o servidor for iniciado novamente, mastero servidor lerá a nova configuração e executará gate-server-1o servidor com essa configuração.

O processo do servidor escutará 32312a porta para que o depurador possa se conectar. Definir a porta mais alta é reduzir a possibilidade de conflitos de porta. ADDRINUSEDurante o processo de desenvolvimento, se você encontrar um erro (a porta já está ocupada) após a inicialização , use pomelo kill --forceo programa kill Pomelo e ajuste o valor da porta aqui.

Configurar o depurador do IDE

1. Abra Edit Configurations...a caixa de diálogo

Run Você pode inseri-lo no pequeno triângulo na frente dos botões de execução e depuração ou selecionar -  na barra de ferramentas Edit Configurations....

Abra a caixa de diálogo Editar configurações

2. Adicione um novoNode.js Remote Debug

Adicionar configuração de depuração remota do Node.js

configuração do depurador do gate study

NameOs nomes das colunas podem ser arbitrários, mas é melhor escolher nomes claros e fáceis de entender. Em seguida, verifique-o Single instance onlypara que apenas um depurador seja iniciado. E não haverá muitos depuradores iguais conectados à porta de depuração especificada posteriormente.

O seguinte Hostescreve localmente127.0.0.1 , Debug Portpreencha o número da porta especificado acima, eu o uso aqui 32312, é exatamente o mesmo que no arquivo de configuração anterior. Local directoryEspecifica o diretório onde o game-server/app.jsdiretório atual está localizado.

Anexo: executar configuração

Claro, você deve ter notado que isso Configurationsinclui não apenas a depuração, mas também a execução da configuração. O método de configuração em execução é o mesmo que o método geral de configuração do programa NodeJS. Os recém-chegados ao NodeJS podem consultar a configuração na imagem. Preste atenção ao conteúdo da caixa.

Exemplos de configuração de execução do servidor de jogos e do servidor da web

pronto para depurar

1. Inicie os servidores Web e Chat, respectivamente

Se você configurou para executar o servidor de bate-papo e da Web, agora pode selecionar e no menu suspenso de configuração na frente dos botões de execução e depuração e, em seguida, Chatclicar Webno botão de execução [►]. Após a execução, você pode visualizar a saída de log da saída do console abaixo do IDE e verificar se a inicialização dos dois servidores foi bem-sucedida. Se houver uma letra vermelha, provavelmente significa que a inicialização falhou. Você pode pesquisar no Google ou enviar um problema de acordo com a mensagem de erro solicitada   para encontrar uma solução.

Executar e depurar seleção de configuração

2. Conecte o depurador

Em seguida, selecione a configuração de depuração agora mesmo no menu suspenso de configuração gate studye clique no botão de depuração [☼]. Verifique a parte inferior da janela Debugger, você pode ver um prompt dizendo Connected to 127.0.0.1:32312.

depurador conectado

3. Defina pontos de interrupção

Como queremos depurar gateo código relacionado à alocação do conector no servidor, abra-o no IDE app/servers/gate/handler/gateHandler.js. Localize a  linha 30  e defina um ponto de interrupção aqui.

Pontos de interrupção em gateHandler.js

prática

Abra http://127.0.0.1:3001/index.html no navegador   e você verá  Chat of Pomeloa página de login do título. Depois de preencher o formulário de duas colunas, clique no botão [JOIN].

Página de Login do Chat Of Pomelo

Nesse ponto, a página não responderá porque o código do lado do servidor está bloqueado por um ponto de interrupção. E o IDE será ativado por causa do depurador:

iniciar a depuração

Na janela inferior, além das funções necessárias como StepOver, StepInto e StepOut usadas na depuração convencional, existem muitas ferramentas úteis, como avaliação instantânea de expressões, interrupção automática quando ocorrem exceções de troca... Não vou discutir isso em profundidade aqui.

aplicativos de bate-papo disponíveis

senso comum

Depois que o servidor da web é iniciado com sucesso, podemos ver que ele solicita que ele possa ser acessado http://127.0.0.1:3001/index.html. Mas todos nós sabemos que 127.0.0.1 é o endereço IP local, se você realmente quiser "conversar" com outras pessoas, isso não funcionará. Como outras pessoas podem não conseguir abrir 127.0.0.1:3001, mesmo se estiver aberto, elas não poderão conversar com você.

Portanto, substitua 127.0.0.1 aqui pelo endereço do seu próprio computador que pode ser acessado por outros membros da rede. Meu endereço aqui é 192.168.1.61. OK, posso abri-lo no navegador http://192.168.1.61:3001/index.html, porque não há problema com a depuração local, então também contei esse endereço com confiança para meus colegas na mesma rede.

problema encontrado

Nesse ponto, surge um problema: eu mesmo posso fazer login na interface de bate-papo, mas ninguém mais pode.

De acordo com a saída do console dos navegadores de outras pessoas, pode-se ver que todos eles se conectaram à 192.168.1.61:3014porta e depois se conectaram novamente 127.0.0.1:3050, portanto, não conseguiram fazer login.

E 3014a porta é gateo servidor, então o problema está aqui, vamos continuar a depuração.

Após algumas trocas de ponto de interrupção, pode-se descobrir que gateHandler.queryEntryele finalmente executou  a função  na  linha 39next .

 
 
  1. var res = dispatcher.dispatch(uid, connectors);

  2. next(null, {

  3. code: 200,

  4. host: res.host,

  5. port: res.clientPort

  6. });

host Pode-se ver que o uso do conteúdo retornado  vem de res.host, e vem do arquivo de configuração.resconnectorsconnectors

E as entradas de configuraçãogame-server/config/servers.json do próximo connectorservidor   podem ser vistas claramente ."host":"127.0.0.1"

Resolva o problema

Encontrei a fonte e imediatamente substituí tudo aqui 127.0.0.1pela minha própria máquina 192.168.1.61. E reinicie Chato servidor.

Quando o colega atualizar a visita novamente, ele poderá fazer o login.

escrito atrás

Pessoas atentas podem descobrir que o endereço IP conectado ao depurador é 127.0.0.1 , mas você pode estar pensando, como se chama "Remote Deubgger", deve ser possível conectar a 127.0.0.1outros IPs, certo?
Eu também acho. No entanto, isso não pode ser feito sem a ajuda de outras ferramentas.

Ou seja, sem a ajuda de uma ferramenta de proxy, não há como se conectar à 127.0.0.1porta de depuração que não seja o endereço.

Você pode usar o método e o código no final do  artigo Wiki oficial do NodeJS  (após Ctrl-F, procure por "Você provavelmente notou") para completar uma ferramenta de proxy. Para depurar o código implantado para execução no servidor remoto.

Acho que você gosta

Origin blog.csdn.net/qq_25062671/article/details/122444900
Recomendado
Clasificación