Visual Studio 2017 - Node.JS Server Process - ¿Desactivar?

132

Estoy trabajando en una aplicación ASP.NET en Visual Studio 2017 y noto un Node.JS: proceso Javascript del lado del servidor que se ejecuta en 1.3GB a 1.8GB de memoria. Mi proceso de trabajo de IIS tiene el tamaño normal que tiene VS 2015.

Mi aplicación no incluye ninguna biblioteca Node.JS. No puedo encontrar la manera de desactivar este Nodo.JS: proceso Javascript del lado del servidor. Está consumiendo demasiada memoria para algo que no uso.

¿Hay alguna manera de eliminar esto además de desinstalar VS 2017 y volver a VS 2015?

ingrese la descripción de la imagen aquí

Matar el proceso principal en el Administrador de tareas no afecta nada en VS, sin embargo, si voy a la pestaña Detalles y elimino los procesos individuales en ejecución, se bloquea Visual Studio. Tomé un video de lo que sucedió después de que finalicé el proceso y ejecuté mi página web local (perdón por la calidad, así que el tamaño de la imagen es tan limitado a 2 MB):

ingrese la descripción de la imagen aquí

Ryan Ternier
fuente
1
¿Estás usando TypeScript?
SLaks
Estamos usando una pequeña cantidad de ella.
Ryan Ternier
Terminé ese proceso y no he visto ningún efecto negativo. El compilador web compila MENOS archivos sin él.
Glen Little
@GlenLittle Eso funciona, pero como el gato ... volvió. Me pregunto si es algo instalado al principio y siempre se está ejecutando. Acabo de instalar VS2017 en mi dispositivo y me dio la opción de instalar el servidor. Actualizaré esto cuando lo pruebe
Ryan Ternier
¿Puedes presentar un comentario sobre esto? Hay algunas características diferentes en las herramientas de desarrollo web que usan Node debajo del capó (como JSLint / CSSLint / etc.) que podrían estar involucradas aquí. Estos aparecerían para cualquier proyecto web, no solo TypeScript o Node.
Jimmy

Respuestas:

183

Herramientas> Opciones> Editor de texto> JavaScript / TypeScript> Servicio de lenguaje ...

Desmarque 'Habilitar el nuevo servicio de lenguaje JavaScript'.

Esto parece evitar que se inicie el proceso NodeJS.

Andy Taw
fuente
19
Esta solución ayudó, debería ser votada. Pero debe reiniciar Visual Studio para que esto surta efecto.
madd
14
Hice esto, reinicié VS2017 y todavía no impedía que "Node.js: JavaScript del lado del servidor" se iniciara cuando comencé VS2017. Está acaparando unos 800 MB en mi máquina y ya no puedo depurar en Chrome.
Bill
1
El mismo problema aquí @Bill: deshabilitar la extensión TypeScript según la respuesta de Gabriel parece haberlo resuelto.
Dunc
1
¿Que demonios? ¿Por qué está haciendo eso en la configuración del Editor de texto? : P
Sanađошƒаӽ
3
Esto ni siquiera es una opción para mí en mis menús
BradLaney
29

Elevé comentarios sobre este tema:

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

Recibí respuesta de un equipo de MS; él me dirigió a esta publicación:

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

El proceso node.exe tiene la línea de comando: ingrese la descripción de la imagen aquí

Efectivamente me dijeron:

En VS 2017, se implementan varias características en JavaScript. Visual Studio utiliza Node.js para ejecutar ese JavaScript. Entre otras cosas, Node se usa para ejecutar el código que proporciona servicios de formateo e inteligencia cuando un usuario edita TypeScript o JavaScript. Este es un cambio de VS 2015.

Responde a mi pregunta, pero saca a la luz otra: ¿por qué necesita 1,4 GB de memoria para proporcionarme inteligencia en los archivos JavaScript ... o esta es una de las soluciones que se ha incorporado en VS para que use menos memoria? No alcanza el límite de 2 GB (4 GB) de los procesos de 32 bits? Preguntas preguntas preguntas.

Ryan Ternier
fuente
De hecho, es una cosa hacer que el proceso VS principal sea más receptivo y optimizar el rendimiento lazificando ciertas cosas como Intellisense en otro proceso y con más memoria RAM para cada proceso de 32 bits. Pero eso no nos importa en este caso. Lo que he encontrado es que Node consume más memoria si tiene más archivos de código fuente abiertos e Intellisense habilitado. Si realmente se está quedando sin memoria, experimente con la desactivación de Intellisense y otras características que podría prescindir.
user1306322
2
Ha tenido el efecto contrario para mí y ha hecho que VS2017 sea tan vago (juego de palabras) que volveré a VS2015. Me parece ridículo que MS tenga que usar marcos externos de terceros para hacer algo tan simple como Intellisense. Ese siempre ha sido uno de sus puntos fuertes ... ¿y ahora? He deshabilitado TypeScript y Node.js y si solo miro Chrome VS2017 se cuelga tan mal, a veces tengo que reiniciar. Así que de vuelta a Firefox y VS2015 para mí, al menos por ahora. Y esto está en un i7, 16GM RAM y toda la configuración SSD con Win10 Pro. Impactante.
Neville
de acuerdo con la publicación a la que se hace referencia aquí ... Deshabilitar la extensión TypeScript es una solución temporal por el momento, al menos para mí. Haga clic en Herramientas, Extensiones y Actualizaciones, busque "TypeScript" y desactívelo. Reinicie Visual Studio.
pat capozzi
Bueno, eso explica por qué Intellisense se ha ido al infierno.
Andy
19

Debe deshabilitar la compatibilidad con TypeScript en Visual Studio:

Herramientas> Extensiones y actualizaciones> TypeScript para Microsoft Visual Studio> Desactivar

Después de eso, solo reinicie Visual Studio y estará listo.

Gabriel
fuente
1
aún en marcha después he seguido estos pasos
Jervie Vitriolo
1
Aún corriendo. Esto no hizo nada.
BradLaney
16

La respuesta de Ryan Ternier me señaló en lo que creo que es la dirección correcta. Seguir su enlace ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) me llevó a la respuesta de Bowden Kelly , justo debajo de la respuesta aceptada.

Aquí está la respuesta de Bowden Kelly:

El proceso de nodo que está viendo está activando el servicio de lenguaje JavaScript. Verá que este proceso aparece cada vez que edite un archivo JS, un archivo TS o cualquier archivo con JS / TS dentro (html, cshtml, etc.). Este proceso es lo que impulsa IntelliSense, navegación de código, formateo y otras funciones de edición y lo hace analizando todo el contexto de su proyecto. Si tiene muchos archivos .js en su proyecto, esto puede agrandarse, pero lo más probable es que tenga muchos archivos de biblioteca que se están analizando. Por defecto, escanearemos todos los archivos .js / .ts en su proyecto. Pero puede anular este comportamiento y ajustar el servicio de idiomas para que solo se centre en su código. Para hacer esto, cree un tsconfig.json en la raíz de su proyecto con la siguiente configuración:

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

Una vez que agregué la carpeta con todas mis bibliotecas de scripts en el archivo tsconfig.json, la vida volvió a ser buena.

Ralph
fuente
Después de que mi caja de jabón gimotee en la respuesta anterior, ¡parece que me salvó el día! ¡Una cosa tan simple pero tan oscura y solo me llevó tres días de lucha con VS2017 para finalmente encontrar esto!
Neville
Agregar este archivo condujo a todo tipo de errores de TypeScript cuando construí el proyecto. Lo eliminó y los errores desaparecieron.
John81
4

La solución alternativa más sucia: simplemente cambie el nombre de ServiceHub.Host.Node.x86.exea otra cosa. No me ha molestado desde entonces. Cuando (si) realmente lo necesita, simplemente cámbiele el nombre.

El mismo truco funciona en Adobe Photoshop, que también ejecuta Node por alguna razón que aún no he descubierto en mi flujo de trabajo habitual.


Resulta que ...

No puede simplemente cambiarle el nombre y esperar que las cosas sigan funcionando. ¡Quien sabe!

Aparentemente, este truco de cambio de nombre solo funciona si suspende el proceso VS y elimina Node, luego reanuda VS. Si intenta iniciar VS con el archivo Node exe renombrado, se bloqueará al abrir un proyecto con un "error duro desconocido". Además, mientras trabaja en un proyecto ya cargado, el contador de referencia diferido de los métodos y propiedades anteriores no funcionará porque aparentemente eso depende de que Node esté allí de alguna manera.

Por lo tanto, podría estar bien simplemente suspender el proceso Node y dejar que la paginación de Windows intercambie su memoria del ram en el disco duro, sin cambiar el nombre del exe para que pueda iniciar el VS nuevamente más tarde sin pasar por la molestia de cambio de nombre. Si estás dispuesto a vivir con las consecuencias, eso es.

usuario1306322
fuente
Desafortunadamente, creo que hay algún código que detectará si el proceso del nodo no responde y lanzará uno nuevo. No estoy familiarizado con esa parte del código VS, pero así es como me lo describieron.
Jimmy
Siempre me gusta la idea de privar por la fuerza , ya sabes a lo que me refiero ... ;-)
Sнаđошƒаӽ
3

Algo que puede ayudar a los proyectos a mitigar el peso del nodo: es reasignar la versión del nodo utilizada en Herramientas> Opciones> Proyectos y soluciones> Administración de paquetes web a una versión instalada de 64 bits. Studio aún lanzará su Nodo interno para una instancia de tsserver.js, pero cualquier mecanografiado en el proyecto tendrá la versión provista por defecto, y esto me ayudó de primera mano.

Además, otra vez que encontré que el servicio de idiomas se estaba agotando, descubrí que usaba un simple tsconfig.jsonencima de los directorios utilizados como repositorios, y especifico skipLibCheck: truey agrego node_modules para excluirlo: fue de gran ayuda a lo largo del servicio, y un archivo hace todas las carpetas debajo independientemente de las referencias directas del proyecto. PD: si todavía desea la compatibilidad con JavaScript intellisense, asegúrese de configurar la opción allowJs: truey noEmit: true.

Por último, verifique en las Opciones de mecanografiado en Herramientas> Opciones> Editor de texto> Javascript / Mecanografiado> Proyecto que no está marcado para compilar automáticamente archivos de Mecanografiado que no son parte de un proyecto, ya que también puede vincular recursos para proyectos auxiliares de terceros usando nodo o mecanografiado.

Estos no son infalibles, cada uno tiene que encontrar su cuello de botella exacto, pero he descubierto que estos han funcionado para mí y para mi equipo la mayoría de las veces

Nathan Teague
fuente
Esto funcionó para mí. Se agregó 'C: \ Archivos de programa \ nodejs' (donde previamente instalé NodeJS manualmente), a la parte superior de esta lista, y el proceso Node.js pasó de 50-60% de carga de CPU a 0%.
andynil
1

Solo señalando que el alto consumo de memoria se ha corregido en la versión 15.2 (26430.04) de Visual Studio 2017, versión 10.2 de mayo de 2017.

Notas de la versión aquí: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Notas específicas sobre la solución aquí: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

zulumojo
fuente
2
Ejecutando 15.2 (26430.16) aquí y diría que tal vez solucionaron un problema ridículamente de alto consumo de memoria, pero solo lograron degradarlo a un consumo de alta memoria :)
PJUK
1
Convenido. El problema se debe principalmente a cuán mal escrito está node.js en primer lugar (en el sentido de que las funciones de "objeto" se replican una y otra vez). Esto es lo que sucede cuando tienes gente de Linux desarrollada para Windows, un gran desastre complicado.
MC9000
Informé este problema en github.com/aspnet/JavaScriptServices/issues/1298 . Observé este problema con VS 2015 en 2015 con los proyectos de JavaScript, pero el problema está empeorando.
mundo maravilloso
todavía va a 2 gb en 2017
Geomorillo
No arreglado para mí. Todavía estoy comiendo toneladas de memoria con la versión 15.6.6
John81
0

Para deshabilitar los servicios de idiomas en VS Code, vaya a extensiones, luego filtre las extensiones incorporadas y deshabilite el servicio de lenguaje TypeScript / Javascript.

Finalmente descubrí esto después de que el servicio de nodo del código VS bloqueó mi servidor aproximadamente un millón de veces. Molesto de que esto fuera tan difícil de encontrar documentación.

deshabilitar la extensión de servicio de idioma ts / js incorporado

Ben Olayinka
fuente
0

En mi caso, el bot quería matar el proceso node.js e hice lo siguiente para reducir el consumo de CPU de los procesos Node.Js que se ejecutan en Visual Studio 2019:

  • Eliminé la carpeta "Archivos de programa (x86) / MicrosoftSDK / TypeScript
  • Corro npm rebuild fsevents
  • Apagué en el navegador Chrome: Configuración-Sistema-Continuar ejecutando aplicaciones en segundo plano ...

Me parece mucho mejor ahora. Pero no 100% desafortunadamente.

Espero que esto ayude a alguien por ahí también. ¡Buena suerte chicos! :-)

Honza P.
fuente