Visual Studio 2017 - Processo del server Node.JS - Disattivare?


132

Sto lavorando su un'app ASP.NET in Visual Studio 2017 e noto un Node.JS: processo Javascript lato server in esecuzione da 1,3 GB a 1,8 GB di memoria. Il mio processo di lavoro IIS ha le dimensioni normali di VS 2015.

La mia app non include alcuna libreria Node.JS. Non riesco a capire come disattivare questo Node.JS: processo Javascript lato server disattivato. Sta consumando troppa memoria per qualcosa per cui non mi serve.

C'è un modo per uccidere questo oltre a disinstallare VS 2017 e tornare a VS 2015?

inserisci qui la descrizione dell'immagine

L'uccisione del processo principale in Task Manager non influisce su nulla in VS, tuttavia se vado nella scheda Dettagli e uccido i singoli processi in esecuzione, si arresta Visual Studio. Ho preso un video di ciò che è accaduto dopo aver interrotto il processo ed eseguito la mia pagina Web locale (mi dispiace per la qualità, quindi le dimensioni dell'immagine sono limitate a 2 MB):

inserisci qui la descrizione dell'immagine


1
Stai usando TypeScript?
SLaks

Ne stiamo usando una piccola quantità.
Ryan Ternier,

Ho terminato questo processo e non ho visto alcun effetto negativo. Il compilatore Web compila file MENO senza di essa.
Glen Little

@GlenLittle Funziona, ma come il gatto ... è tornato. Mi chiedo se è qualcosa di installato all'inizio e funziona sempre. Ho appena installato VS2017 sul mio lappy e mi ha dato la possibilità di installare il server. Lo aggiornerò quando ci provo
Ryan Ternier,

Puoi inviare un feedback su questo? Ci sono alcune diverse funzionalità negli strumenti di sviluppo web che usano Node sotto il cofano (come JSLint / CSSLint / etc) che potrebbero essere coinvolti qui. Questi verrebbero visualizzati per qualsiasi progetto Web, non solo per TypeScript o Node.
Jimmy

Risposte:


183

Strumenti> Opzioni> Editor di testo> JavaScript / TypeScript> Servizio lingua ...

Deseleziona "Abilita il nuovo servizio di linguaggio JavaScript".

Questo sembra impedire l'avvio del processo NodeJS.


19
Questa soluzione ha aiutato, dovrebbe essere votata. Ma è necessario riavviare Visual Studio affinché questo abbia effetto.
madd

14
L'ho fatto, riavviato VS2017 e non ha ancora impedito l'avvio di "Node.js: JavaScript lato server" all'avvio di VS2017. Il suo hogging di circa 800 MB sul mio computer e non riesco più a eseguire il debug in Chrome.
Bill

1
Stesso problema qui @Bill - la disabilitazione dell'estensione TypeScript secondo la risposta di Gabriel sembra però averla ordinata.
Dunc,

1
Che diavolo? Perché lo fa nelle impostazioni dell'editor di testo? : P
Sнаđошƒаӽ,

3
Questa non è nemmeno un'opzione per me nei miei menu
BradLaney,

29

Ho sollevato feedback su questo problema:

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

Ho ricevuto risposta da un team di MS - mi ha indirizzato a questo post:

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

Il processo node.exe ha la riga di comando: inserisci qui la descrizione dell'immagine

In effetti mi è stato detto:

In VS 2017, diverse funzionalità sono implementate in JavaScript. Node.js è utilizzato da Visual Studio per eseguire quel JavaScript. Tra le altre cose, Node viene utilizzato per eseguire il codice che fornisce servizi di formattazione e intellisense quando un utente sta modificando TypeScript o JavaScript. Questa è una modifica rispetto a VS 2015.

Risponde alla mia domanda, ma ne mette in luce un altro - perché hai bisogno di 1,4 GB di memoria per darmi intellisense sui file JavaScript ... o è una delle soluzioni che è stata integrata in VS, quindi usa meno memoria e quindi non non raggiungere il limite di 2 GB (4 GB) dei processi a 32 bit? Domande domande domande.


In effetti è una cosa rendere il processo VS principale più reattivo e ottimizzare le prestazioni pigrando alcune cose come Intellisense in un altro processo e con più ram per ogni processo a 32 bit. Ma questo non importa per noi in questo caso. Quello che ho scoperto è che Node consuma più memoria se hai più file di codice sorgente aperti e Intellisense abilitato. Se stai esaurendo la memoria, prova a disabilitare Intellisense e altre funzionalità di cui potresti fare a meno.
user1306322

2
Ha avuto l'effetto opposto per me e ha reso VS2017 così pigro (gioco di parole intenzionale) che torno a VS2015. Trovo ridicolo che gli Stati membri debbano utilizzare quadri esterni di terze parti per fare qualcosa di semplice come Intellisense. Questo è sempre stato uno dei loro punti di forza ... e ora? Ho disabilitato TypeScript e Node.js e se guardo Chrome VS2017 si blocca così tanto che a volte devo riavviare. Quindi torna a Firefox e VS2015 per me, almeno per ora. E questo è su un i7, 16GM RAM e tutte le impostazioni SSD con Win10 Pro. Scioccante.
Neville,

secondo il post a cui si fa riferimento qui ... Disabilitare l'estensione TypeScript è una soluzione per il momento, almeno per me. Fai clic su Strumenti, estensioni e aggiornamenti, cerca "TypeScript" e disabilitalo. Riavvia Visual Studio.
pat capozzi

Bene, questo spiega perché Intellisense è andato all'inferno.
Andy,

19

Devi disabilitare il supporto TypeScript su Visual Studio:

Strumenti> Estensioni e aggiornamenti> TypeScript per Microsoft Visual Studio> Disabilita

Successivamente, riavvia Visual Studio e sei a posto.


1
ancora in esecuzione dopo che ho seguito questi passaggi
Jervie Vitriolo il

1
Ancora correndo. Questo non ha fatto nulla.
BradLaney,

16

La risposta di Ryan Ternier mi ha indicato in quella che credo sia la giusta direzione. Seguendo il suo link ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) mi ha portato alla risposta di Bowden Kelly , proprio sotto la risposta accettata.

Ecco la risposta di Bowden Kelly:

Il processo del nodo che stai vedendo sta alimentando il servizio di linguaggio JavaScript. Vedrai apparire questo processo ogni volta che modifichi un file JS, un file TS o qualsiasi file con JS / TS all'interno (html, cshtml, ecc.). Questo processo è ciò che alimenta IntelliSense, la navigazione del codice, la formattazione e altre funzionalità di modifica e lo fa analizzando l'intero contesto del progetto. Se hai molti file .js nel tuo progetto, questo può diventare grande, ma molto probabilmente il problema è che hai molti file di libreria che vengono analizzati. Per impostazione predefinita, eseguiremo la scansione di ogni file .js / .ts nel tuo progetto. Ma puoi ignorare questo comportamento e ottimizzare il servizio linguistico per concentrarti solo sul tuo codice. Per fare ciò, creare un tsconfig.json nella radice del progetto con le seguenti impostazioni:

    {
    "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
        ]
    }
}

Dopo aver aggiunto la cartella con tutte le mie librerie di script nel file tsconfig.json, la vita è tornata buona.


Dopo che la mia saponetta si è incastrata nella risposta precedente, questo sembra aver salvato la giornata !!! Una cosa così semplice eppure così oscura e mi ci sono voluti solo tre giorni di battaglie con VS2017 per trovare finalmente questo!
Neville,

L'aggiunta di questo file porta a tutti i tipi di errori TypeScript quando ho creato il progetto. Rimosso e gli errori sono andati via.
John81,

4

La soluzione più sporca di sempre: basta rinominare il ServiceHub.Host.Node.x86.exequalcos'altro. Da allora non mi ha più infastidito. Quando (se) ne hai davvero bisogno, rinominalo.

Lo stesso trucco funziona in Adobe Photoshop che esegue anche Node per qualche motivo che non ho ancora scoperto nel mio solito flusso di lavoro.


Si scopre ...

Non puoi semplicemente rinominarlo e aspettarti che le cose continuino a funzionare. Chi lo sapeva!

Apparentemente questo trucco di rinomina funziona solo se sospendi il processo VS e uccidi Node, quindi riprendi VS. Se si tenta di avviare VS con il file exe Node rinominato, si arresta in modo anomalo quando si apre un progetto con un "errore rigido sconosciuto". Inoltre, mentre si lavora su un progetto già caricato, il contatore dei riferimenti pigri sopra i metodi e le proprietà non funzionerà perché apparentemente si basa sul fatto che Node sia lì in qualche modo.

Quindi potrebbe essere giusto sospendere semplicemente il processo Node e consentire al paging di Windows di scambiare la sua memoria da ram sul disco rigido, senza rinominare l'exe in modo da poter riavviare il VS in seguito senza passare attraverso il fastidio di rinominare. Se sei disposto a convivere con le conseguenze, cioè.


Sfortunatamente, penso che ci sia del codice che rileverà se il processo del nodo non risponde e ne lancerà uno nuovo. Non ho familiarità con quella parte del codice VS, ma è così che mi è stato descritto.
Jimmy,

Mi piace sempre l'idea di privare con la forza , sai cosa intendo ... ;-)
Sнаđошƒаӽ

3

Qualcosa che può aiutare i progetti a mitigare il peso di nodejs: è riassegnare la versione del nodo utilizzata in Strumenti> Opzioni> Progetti e soluzioni> Gestione dei pacchetti Web su una versione installata a 64 bit. Studio avvierà comunque il suo nodo interno per un'istanza tsserver.js, ma qualsiasi dattiloscritto nel progetto verrà automaticamente impostato sulla versione fornita, e questo mi ha aiutato in prima persona.

Inoltre, un'altra volta ho scoperto che il servizio linguistico si stava esaurendo, ho scoperto di usare un semplice tsconfig.jsonsopra le directory usate come repository, e specificare skipLibCheck: truee aggiungere node_modules da escludere - enormemente aiutato lungo il servizio, e un file fa tutte le cartelle sottostanti esso, indipendentemente dai riferimenti diretti al progetto. PS: se desideri ancora il supporto di JavaScript intellisense, assicurati di impostare l' opzione allowJs: truee noEmit: true.

Infine, verifica in Opzioni dattiloscritto in Strumenti> Opzioni> Editor di testo> Javascript / dattiloscritto> Progetto che non è stato verificato per compilare automaticamente i file dattiloscritti che non fanno parte di un progetto poiché possono anche legare risorse per progetti ausiliari di terze parti usando il nodo o il dattiloscritto.

Questi non sono infallibili, ognuno deve trovare il collo di bottiglia esatto, ma ho scoperto che questi hanno funzionato per me e il mio team il più delle volte


Questo ha funzionato per me. Aggiunto "C: \ Programmi \ nodejs" (dove ho precedentemente installato manualmente NodeJS), in cima a questo elenco e il processo Node.js è passato dal 50-60% del carico della CPU allo 0%.
Andynil,

1

Solo notando che il consumo di memoria elevata è stato corretto nella versione del 10 maggio 2017 di Visual Studio 2017 15.2 (26430.04).

Note di rilascio qui: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Note specifiche sulla correzione qui: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html


2
Eseguendo 15.2 (26430.16) qui e direi che forse hanno risolto un problema ridicolmente - consumo di memoria elevata ma solo gestito per ridimensionarlo a consumo di memoria elevata :)
PJUK

1
Concordato. Il problema è principalmente dovuto alla scarsa scrittura di node.js (in quel caso le funzioni degli "oggetti" vengono replicate più e più volte), quindi i framework per correggere le carenze di JS renderanno sempre le cose più lente. Questo è ciò che accade quando si sviluppano persone Linux per Windows - un grosso casino contorto.
MC9000,

Ho segnalato questo problema su github.com/aspnet/JavaScriptServices/issues/1298 Ho riscontrato questo problema con VS 2015 nel 2015 con i progetti JavaScript, ma il problema sta peggiorando.
mondo meraviglioso

stil andando 2 GB nel 2017
Geomorillo,

Non risolto per me. Sto ancora consumando tonnellate di memoria con la versione 15.6.6
John81,

0

Per disabilitare i servizi linguistici in VS Code, vai alle estensioni, quindi filtra le estensioni integrate e disabilita il servizio di lingua TypeScript / Javascript.

Alla fine l'ho scoperto dopo che il servizio del nodo del codice VS ha bloccato il mio server circa un milione di volte. Fastidioso che sia stato così difficile trovare documentazione a riguardo.

disabilita l'estensione del servizio di lingua integrata ts / js


0

Nel mio caso ho fatto il bot volevo uccidere il processo node.js e ho fatto le seguenti cose per ridurre il consumo di CPU dei processi Node.Js eseguiti in Visual Studio 2019:

  • Ho rimosso la cartella "Programmi (x86) / MicrosoftSDK / TypeScript
  • io corro npm rebuild fsevents
  • Ho disattivato nel browser Chrome: Impostazioni-Sistema-Continua a eseguire app in background ...

Adesso mi sembra molto meglio. Ma non sfortunatamente al 100%.

Spero che questo aiuti anche qualcuno là fuori. Buona fortuna ragazzi! :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.