web-dev-qa-db-fra.com

Visual Studio 2017 - Processus de serveur Node.JS - Désactiver?

Je travaille sur une application ASP.NET dans Visual Studio 2017 et je remarque un processus Javascript Node.JS: Javascript fonctionnant entre 1,3 Go et 1,8 Go de mémoire. Mon processus de travail IIS est de la taille normale dans VS 2015.

Mon application n'inclut aucune bibliothèque Node.JS. Je ne suis pas en mesure de comprendre comment désactiver ce processus JavaScript Node.JS: Server. C'est manger trop de mémoire pour quelque chose que je n'ai aucune utilité.

Existe-t-il un moyen de supprimer ce problème en dehors de la désinstallation de VS 2017 et du retour à VS 2015?

enter image description here

Tuer le processus principal dans le Gestionnaire des tâches n'affecte en rien le système virtuel. Toutefois, si je vais dans l'onglet Détails et que je tue les processus individuels en cours d'exécution, Visual Studio se bloque. J'ai pris une vidéo de ce qui s'est passé après avoir interrompu le processus et lancé ma page Web locale (désolée pour la qualité, SO taille d'image limitée à 2 Mo):

enter image description here

125
Ryan Ternier

Outils> Options> Editeur de texte> JavaScript/TypeScript> Service de langage ...

Décochez la case "Activer le nouveau service de langage JavaScript".

Cela semble empêcher le démarrage du processus NodeJS.

167
Andy Taw

J'ai soulevé des commentaires sur cette question:

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

J'ai reçu une réponse d'une équipe MS - il m'a dirigé vers ce post:

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

Le processus node.exe a la ligne de commande suivante: enter image description here

Effectivement on m'a dit:

Dans VS 2017, plusieurs fonctionnalités sont implémentées en JavaScript. Node.js est utilisé par Visual Studio pour exécuter ce code JavaScript. Entre autres choses, Node est utilisé pour exécuter le code qui fournit le formatage et les services intellisense lorsqu'un utilisateur est en train de modifier TypeScript ou JavaScript. Ceci est un changement de VS 2015.

Cela répond à ma question, mais en met un autre en lumière: pourquoi avez-vous besoin de 1,4 Go de mémoire pour me permettre d’intellisense sur les fichiers JavaScript ... ou est-ce l’une des solutions qui a été intégrée dans le VS, de sorte qu’elle utilise moins de mémoire ne pas atteindre la limite de 2 Go (4 Go) des processus 32 bits? Questions questions questions.

27
Ryan Ternier

Vous devez désactiver la prise en charge de TypeScript sur Visual Studio:

Outils> Extensions et mises à jour> TypeScript pour Microsoft Visual Studio> Désactiver

Après cela, redémarrez Visual Studio et vous êtes prêt à partir.

18
Gabriel

La réponse de Ryan Ternier m'a orienté dans ce que je crois être la bonne direction. En suivant son lien ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) m'a conduit à la réponse de Bowden Kelly, juste en dessous de la réponse acceptée.

Voici la réponse de Bowden Kelly:

Le processus de nœud que vous voyez alimente le service de langage JavaScript. Ce processus apparaît chaque fois que vous modifiez un fichier JS, un fichier TS ou tout fichier contenant JS/TS à l'intérieur (html, cshtml, etc.). C'est ce processus qui optimise IntelliSense, la navigation dans le code, la mise en forme et d'autres fonctionnalités d'édition. Pour ce faire, il analyse l'ensemble du contexte de votre projet. Si vous avez beaucoup de fichiers .js dans votre projet, cela peut devenir volumineux, mais il est plus que probable que le problème est que vous avez beaucoup de fichiers de bibliothèque en cours d'analyse. Par défaut, nous analyserons tous les fichiers .js/.ts de votre projet. Mais vous pouvez remplacer ce comportement et ajuster le service linguistique pour qu'il ne se concentre que sur votre code. Pour ce faire, créez un fichier tsconfig.json dans la racine de votre projet avec les paramètres suivants:

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

Une fois que j'ai ajouté le dossier avec toutes mes bibliothèques de scripts dans le fichier tsconfig.json, la vie était redevenue bonne.

16
Ralph

La solution la plus sale jamais vue: il suffit de renommer le ServiceHub.Host.Node.x86.exe en quelque chose d'autre. Ne m'a pas dérangé depuis. Si vous en avez réellement besoin, renommez-le.

La même astuce fonctionne dans Adobe Photoshop, qui exécute également Node pour une raison que je n'ai pas encore découverte dans mon flux de travail habituel.


Il s'avère que...

Vous ne pouvez pas simplement le renommer et vous attendre à ce que les choses continuent à fonctionner. Qui savait!

Apparemment, cette astuce de changement de nom ne fonctionne que si vous suspendez le processus VS et tuez Node, puis reprenez VS. Si vous essayez de lancer VS avec le fichier Node exe renommé, il se bloque lors de l’ouverture d’un projet avec une "erreur non corrigée". De même, tout en travaillant sur un projet déjà chargé, le compteur de références paresseux ci-dessus, méthodes et propriétés, ne fonctionnera pas, car cela repose apparemment sur le fait que Node soit présent.

Donc, vous pouvez suspendre simplement le processus Node et laisser la pagination Windows échanger sa mémoire de la mémoire vive sur le disque dur, sans renommer le fichier exe, de sorte que vous puissiez redémarrer le VS plus tard sans passer par la tâche difficile de renommer . Si vous êtes prêt à vivre avec les conséquences, c'est.

5
user1306322

Quelque chose qui puisse aider les projets à réduire le poids du noeud: consiste à réaffecter la version du noeud utilisée sous Outils> Options> Projets et solutions> Gestion des packages Web à une version 64 bits installée. Studio lancera toujours son Node interne pour une instance de tsserver.js, mais tout TypeScript dans le projet utilisera par défaut la version fournie - et cela m'a aidé de première main.

En outre, une autre fois, j’ai constaté que le service linguistique était en panne, j’ai découvert à l'aide d'un simple tsconfig.json situé au-dessus des répertoires utilisés en tant que référentiels, en spécifiant à skipLibCheck: true et en ajoutant node_modules à exclure. dossiers en dessous, indépendamment des références directes du projet. P.S. - Si vous souhaitez toujours que JavaScript soit encore pris en charge par intellisense, veillez à définir les options allowJs: true et noEmit: true.

Enfin, vérifiez dans les options TypeScript sous Outils> Options> Editeur de texte> Javascript/TypeScript> Projet qu'il n'est pas coché pour Compiler automatiquement les fichiers TypeScript qui ne sont pas partie d'un projet car cela peut également bloquer des ressources pour des projets tiers auxiliaires en utilisant node ou TypeScript.

Celles-ci ne sont pas infaillibles, chacune doit trouver son goulot d'étranglement exact, mais j'ai constaté qu'elles fonctionnaient plus souvent pour moi et mon équipe

3
Nathan Teague

Notez simplement que la consommation de mémoire élevée a été corrigée dans la version 15.2 (26430.04) de Visual Studio 2017 - Version 2017.

Notes de publication ici: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Notes spécifiques sur le correctif ici: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

1
zulumojo