Visual Studio 2017 - Processo do servidor Node.JS - Desativar?

132

Estou trabalhando em um aplicativo ASP.NET no Visual Studio 2017 e percebendo um processo Javascript do Node.JS: Server executando de 1,3 a 1,8 GB de memória. Meu processo de trabalho do IIS é do tamanho normal do VS 2015.

Meu aplicativo não inclui nenhuma biblioteca Node.JS. Não consigo descobrir como desativar esse processo Javascript do Node.JS: Server. Está consumindo muita memória para algo que eu não uso.

Existe uma maneira de eliminar isso, além de desinstalar o VS 2017 e voltar ao VS 2015?

insira a descrição da imagem aqui

Matar o processo principal no Gerenciador de tarefas não afeta nada no VS, no entanto, se eu for para a guia Detalhes e matar os processos individuais em execução, ele trava o Visual Studio. Eu gravei um vídeo do que aconteceu depois que finalizei o processo e executei minha página da web local (desculpe pela qualidade, o tamanho da imagem é limitado a 2 MB):

insira a descrição da imagem aqui

Ryan Ternier
fonte
1
Você está usando TypeScript?
SLaks
Estamos usando uma pequena quantidade dele.
Ryan Ternier
Eu terminei esse processo e não vi nenhum efeito negativo. O compilador da Web compila menos arquivos sem ele.
Glen Little
@GlenLittle Isso funciona, mas como o gato ... voltou. Gostaria de saber se é algo instalado no início e está sempre em execução. Acabei de instalar o VS2017 no meu lappy e ele me deu a opção de instalar o servidor. Vou atualizá-lo quando testá-lo
Ryan Ternier 15/03
Você pode registrar um item de feedback sobre isso? Existem alguns recursos diferentes nas ferramentas de desenvolvimento da Web que usam o Node sob o capô (como o JSLint / CSSLint / etc) que podem estar envolvidos aqui. Eles apareceriam em qualquer projeto da Web, não apenas no TypeScript ou Node.
Jimmy

Respostas:

183

Ferramentas> Opções> Editor de texto> JavaScript / TypeScript> Serviço de idiomas ...

Desmarque a opção 'Ativar o novo serviço de idioma JavaScript'.

Isso parece impedir o início do processo do NodeJS.

Andy Taw
fonte
19
Esta solução ajudou, deve ser votada. Mas você precisa reiniciar o visual studio para que isso entre em vigor.
MADD
14
Fiz isso, reiniciei o VS2017 e ainda não impediu o início do "Node.js: JavaScript do servidor" quando iniciei o VS2017. Está consumindo cerca de 800 MB na minha máquina e não consigo mais depurar no Chrome.
Bill
1
Mesmo problema aqui @Bill - desativar a extensão TypeScript conforme a resposta de Gabriel parece ter resolvido a questão.
Dunc 15/05
1
Que diabos? Por que isso está acontecendo nas configurações do Editor de texto? : P
Sнаđошƒаӽ
3
Isso não é sequer uma opção para mim em meus menus
BradLaney
29

Levantei comentários sobre esse assunto:

https://developercommunity.visualstudio.com/content/problem/31406/visual-studio-2017-nodejs-server-process-turn-off.html

Recebi resposta de uma equipe da MS - ele me direcionou para este post:

https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629

O processo node.exe tem a linha de comando: insira a descrição da imagem aqui

Efetivamente me disseram:

No VS 2017, vários recursos são implementados em JavaScript. O Node.js é usado pelo Visual Studio para executar esse JavaScript. Entre outras coisas, o Node é usado para executar o código que fornece serviços de formatação e intellisense quando um usuário está editando TypeScript ou JavaScript. Esta é uma alteração do VS 2015.

Ele responde à minha pergunta, mas traz à tona outra - por que você precisa de 1,4 GB de memória para fornecer inteligência nos arquivos JavaScript ... ou essa é uma das soluções que foram incorporadas ao VS, portanto, usa menos memória e não atingiu o limite de 2 GB (4 GB) de processos de 32 bits? Perguntas perguntas perguntas.

Ryan Ternier
fonte
De fato, é importante tornar o processo principal do VS mais responsivo e otimizar o desempenho colocando algumas coisas como o Intellisense em outro processo e com mais memória RAM para cada processo de 32 bits. Mas isso não importa para nós neste caso. O que eu descobri é que o Node consome mais memória se você tiver mais arquivos de código-fonte abertos e o Intellisense ativado. Se você realmente está com pouca memória, experimente desabilitar o Intellisense e outros recursos que você poderia dispensar.
user1306322
2
Ele teve o efeito oposto para mim e tornou o VS2017 tão preguiçoso (trocadilhos) que estou voltando ao VS2015. Acho ridículo que a MS tenha que usar estruturas externas de terceiros para fazer algo tão simples quanto o Intellisense. Esse sempre foi um dos seus pontos fortes ... e agora? Desabilitei o TypeScript e o Node.js e, se apenas olhar para o Chrome VS2017, é tão difícil que às vezes preciso reiniciar. Então, voltando ao Firefox e ao VS2015 para mim, pelo menos por enquanto. E isso está em um i7, 16GM de RAM e toda a configuração de SSD com o Win10 Pro. Chocante.
Neville
de acordo com o post mencionado aqui ... Desabilitar a extensão TypeScript é uma solução temporária, pelo menos para mim. Clique em Ferramentas, extensões e atualizações, procure por "TypeScript" e desative-o. Reinicie o Visual Studio.
Pat Capozzi
Bem, isso explica por que o Intellisense foi para o inferno.
Andy
19

Você precisa desativar o suporte ao TypeScript no Visual Studio:

Ferramentas> Extensões e atualizações> TypeScript para Microsoft Visual Studio> Desativar

Depois disso, basta reiniciar o Visual Studio e você estará pronto.

Gabriel
fonte
1
Ainda correndo atrás eu segui este passos
Jervie vitriolo
1
Ainda correndo. Isso não fez nada.
precisa saber é o seguinte
16

A resposta de Ryan Ternier me mostrou o que acredito ser a direção certa. Seguir o link ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) me levou à resposta de Bowden Kelly , logo abaixo da resposta aceita.

Aqui está a resposta de Bowden Kelly:

O processo do nó que você está vendo está alimentando o serviço de idioma JavaScript. Você verá esse processo aparecer sempre que editar um arquivo JS, arquivo TS ou qualquer arquivo com JS / TS dentro (html, cshtml, etc). Esse processo é o que capacita o IntelliSense, a navegação de código, a formatação e outros recursos de edição, e faz isso analisando todo o contexto do seu projeto. Se você tiver muitos arquivos .js em seu projeto, isso pode ficar grande, mas é mais provável que o problema seja que você tem muitos arquivos de biblioteca que estão sendo analisados. Por padrão, verificaremos todos os arquivos .js / .ts no seu projeto. Mas você pode substituir esse comportamento e ajustar o serviço de idiomas para se concentrar apenas no seu código. Para fazer isso, crie um tsconfig.json na raiz do seu projeto com as seguintes configurações:

    {
    "compilerOptions": {
        "allowJs": true,
        "noEmit": true
    },
    "exclude": [
        "wwwroot/lib" //ignore everything in the lib folder (bootstrap, jquery, etc)
        // add any other folders with library code here
    ],
    "typeAcquisition": { 
        "enable": true,
        "include": [
            "bootstrap",
            "jquery"  //list libraries you are using here
        ]
    }
}

Depois de adicionar a pasta com todas as minhas bibliotecas de scripts ao arquivo tsconfig.json, a vida foi boa novamente.

Ralph
fonte
Depois que minha caixa de sabão bater na resposta anterior, isso parece ter salvado o dia !!! Uma coisa tão simples, mas tão obscura, e só levei três dias de luta com o VS2017 para finalmente encontrar isso!
Neville
A adição deste arquivo levou a todos os tipos de erros de TypeScript quando criei o projeto. Removido e os erros desapareceram.
John81
4

A solução mais suja de todos os tempos: renomeie o ServiceHub.Host.Node.x86.exe para outra coisa. Não me incomoda desde então. Quando (se) você realmente precisar, basta renomeá-lo novamente.

O mesmo truque funciona no Adobe Photoshop, que também executa o Node por algum motivo que ainda não descobri no meu fluxo de trabalho habitual.


Acontece que ...

Você não pode simplesmente renomeá-lo e esperar que as coisas continuem funcionando. Quem sabia!

Aparentemente, esse truque de renomeação só funciona se você suspender o processo do VS e matar o Node e, em seguida, retomar o VS. Se você tentar iniciar o VS com o arquivo Node exe renomeado, ele falhará ao abrir um projeto com um "erro grave desconhecido". Além disso, ao trabalhar em um projeto já carregado, o contador de referência lento acima dos métodos e propriedades não funcionará porque, aparentemente, isso depende do Node estar de alguma forma.

Portanto, pode ser bom suspender o processo do Nó e permitir que a paginação do Windows troque sua memória do ram para o disco rígido, sem renomear o exe, para que você possa iniciar o VS novamente mais tarde sem passar pelo incômodo de renomear. Se você está disposto a viver com as consequências, é isso.

user1306322
fonte
Infelizmente, acho que há algum código que detectará se o processo do nó não responde e lança um novo. Não estou familiarizado com essa parte do código VS, mas foi assim que me foi descrito.
Jimmy
Eu sempre gosto da idéia de privar pela força , você sabe o que quero dizer ... ;-)
Sнаđошƒаӽ
3

Algo que pode ajudar os projetos a reduzir o peso do nodejs: é reatribuir a versão do nó usada em Ferramentas> Opções> Projetos e Soluções> Gerenciamento de Pacotes da Web a uma versão de 64 bits instalada. O Studio ainda lançará seu Nó interno para uma instância tsserver.js, mas qualquer texto datilografado no projeto será padronizado para a versão fornecida - e isso me ajudou em primeira mão.

Além disso, outra vez que descobri que o serviço de idiomas estava acabando, descobri usando um simples tsconfig.jsonacima dos diretórios usados ​​como repositórios e especifiquei skipLibCheck: truee adicionei node_modules para excluir - tremendamente ajudado no serviço, e um arquivo faz todas as pastas abaixo independentemente das referências diretas ao projeto. PS - se você desejar ainda suporte a intellisense para JavaScript, defina as allowJs: trueopçõesnoEmit: true opção .

Por fim, verifique nas Opções de texto datilografado em Ferramentas> Opções> Editor de texto> Javascript / Texto datilografado> Projeto que não está marcado para compilar automaticamente arquivos datilografados que não fazem parte de um projeto pois também podem vincular recursos para projetos auxiliares de terceiros usando nó ou texto datilografado.

Estes não são à prova de idiotas, cada um precisa encontrar o gargalo exato, mas eu descobri que eles funcionaram para mim e minha equipe com mais frequência do que nunca

Nathan Teague
fonte
Isso funcionou para mim. Adicionado 'C: \ Arquivos de Programas \ nodejs' (onde eu instalei o NodeJS manualmente) anteriormente, no topo desta lista, e o processo do Node.js. passou de 50-60% da carga da CPU para 0%.
25918 Andynil
1

Apenas observando que o consumo de alta memória foi corrigido na versão de 10 de maio de 2017 - Visual Studio 2017 versão 15.2 (26430.04).

Notas da versão aqui: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Notas específicas sobre a correção aqui: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

zulumojo
fonte
2
Correndo 15,2 (26.430,16) aqui e eu diria que talvez eles fixa um ridiculamente - problema de consumo de alta memória, mas apenas manged para downgrad-lo para o alto consumo de memória :)
PJUK
1
Acordado. O problema é principalmente devido ao quão ruim o node.js está em primeiro lugar (em que as funções de "objeto" são replicadas repetidas vezes) - então, novamente, as estruturas para corrigir as deficiências de JS sempre tornam as coisas mais lentas. É o que acontece quando você desenvolve o Linux para Windows - uma grande bagunça complicada.
MC9000
Relatei esse problema em github.com/aspnet/JavaScriptServices/issues/1298 Observei esse problema no VS 2015 em 2015 com os projetos JavaScript, mas o problema está se tornando cada vez pior.
mundo maravilhoso
stil vai 2 gb em 2017
Geomorillo 28/10
Não é fixo para mim. Ainda comendo toneladas de memória com a versão 15.6.6
John81
0

Para desativar os Serviços de idiomas no código VS, vá para extensões, filtre as extensões internas e desative o serviço de idioma TypeScript / Javascript.

Finalmente descobri isso depois que o serviço do nó do código VS travou meu servidor cerca de um milhão de vezes. Irritante que isso fosse tão difícil de encontrar documentação.

desativar extensão de serviço de idioma ts / js embutida

Ben Olayinka
fonte
0

No meu caso, o bot queria matar o processo node.js. e fiz o seguinte para reduzir o consumo da CPU dos processos do Node.Js que são executados no Visual Studio 2019:

  • Eu removi a pasta "Arquivos de Programas (x86) / MicrosoftSDK / TypeScript
  • eu corro npm rebuild fsevents
  • Desliguei no navegador Chrome: Configurações-Sistema-Continue executando aplicativos em segundo plano ...

Parece-me muito melhor agora. Mas não 100%, infelizmente.

Espero que isso ajude alguém por aí também. Boa sorte pessoal! :-)

Honza P.
fonte