it-swarm.com.de

Visual Studio 2017 - Node.JS-Serverprozess - Ausschalten?

Ich arbeite an einer ASP.NET-App in Visual Studio 2017 und stelle fest, dass ein Node.JS: Server-seitiger Javascript-Prozess mit einer Speicherkapazität von 1,3 GB bis 1,8 GB ausgeführt wird. Mein IIS Worker-Prozess entspricht der normalen Größe in VS 2015.

Meine App enthält keine Node.JS-Bibliotheken. Ich kann nicht herausfinden, wie dieser Node.JS: Server-seitige Javascript-Prozess deaktiviert wird. Es frisst zu viel Speicher für etwas, für das ich nichts brauche.

Gibt es eine Möglichkeit, dies außer der Deinstallation von VS 2017 und dem Wechsel zurück zu VS 2015 zu beenden?

enter image description here

Das Beenden des Hauptprozesses im Task-Manager hat keine Auswirkungen auf VS. Wenn ich jedoch zur Registerkarte Details gehe und die einzelnen ausgeführten Prozesse beende, stürzt Visual Studio ab. Ich habe ein Video aufgenommen, was passiert ist, nachdem ich den Prozess abgebrochen und meine lokale Webseite aufgerufen habe (Entschuldigung für die Qualität, SO Bildgröße auf 2 MB begrenzt):

enter image description here

125
Ryan Ternier

Extras> Optionen> Texteditor> JavaScript/TypeScript> Sprachdienst ...

Deaktivieren Sie das Kontrollkästchen "Neuen JavaScript-Sprachdienst aktivieren".

Dies scheint zu verhindern, dass der NodeJS-Prozess gestartet wird.

167
Andy Taw

Ich habe Feedback zu diesem Thema gegeben:

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

Ich habe eine Antwort von einem MS-Team erhalten - er hat mich auf diesen Beitrag verwiesen:

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

Der Prozess node.exe hat die Befehlszeile: enter image description here

Tatsächlich wurde mir gesagt:

In VS 2017 sind mehrere Funktionen in JavaScript implementiert. Node.js wird von Visual Studio zum Ausführen dieses JavaScript verwendet. Unter anderem wird mit Node der Code ausgeführt, der Formatierungs- und Intellisense-Dienste bereitstellt, wenn ein Benutzer TypeScript oder JavaScript bearbeitet. Dies ist eine Änderung gegenüber VS 2015.

Es beantwortet meine Frage, bringt aber eine andere ans Licht - warum benötigen Sie 1,4 GB Speicher, um mir einen Einblick in JavaScript-Dateien zu geben? Oder ist dies eine der Lösungen, die in VS integriert wurden, damit weniger Speicher verwendet wird, so dass dies nicht der Fall ist ist die Grenze von 2 GB (4 GB) für 32-Bit-Prozesse nicht erreicht? Fragen Fragen Fragen.

27
Ryan Ternier

Sie müssen die TypeScript-Unterstützung in Visual Studio deaktivieren:

Extras> Erweiterungen und Updates> TypeScript für Microsoft Visual Studio> Deaktivieren

Starten Sie danach einfach Visual Studio neu und Sie können loslegen.

18
Gabriel

Die Antwort von Ryan Ternier zeigte mir, was ich für die richtige Richtung halte. Folgen Sie seinem Link ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) führte mich zu Bowden Kellys Antwort, direkt unter der akzeptierten Antwort.

Hier ist die Antwort von Bowden Kelly:

Der angezeigte Knotenprozess aktiviert den JavaScript-Sprachdienst. Sie werden diesen Vorgang immer dann sehen, wenn Sie eine JS-Datei, eine TS-Datei oder eine Datei mit JS/TS (html, cshtml usw.) bearbeiten. Dieser Prozess ermöglicht IntelliSense, die Code-Navigation, die Formatierung und andere Bearbeitungsfunktionen und analysiert dabei den gesamten Kontext Ihres Projekts. Wenn Sie viele .js-Dateien in Ihrem Projekt haben, kann dies sehr umfangreich werden, aber höchstwahrscheinlich liegt das Problem darin, dass Sie viele Bibliotheksdateien haben, die analysiert werden. Standardmäßig scannen wir jede .js/.ts-Datei in Ihrem Projekt. Sie können dieses Verhalten jedoch außer Kraft setzen und den Sprachdienst so einstellen, dass er sich nur auf Ihren Code konzentriert. Erstellen Sie dazu eine tsconfig.json in Ihrem Projektstamm mit den folgenden Einstellungen:

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

Nachdem ich den Ordner mit all meinen Skriptbibliotheken in die Datei tsconfig.json eingefügt hatte, war das Leben wieder gut.

16
Ralph

Die schmutzigste Problemumgehung aller Zeiten: Benennen Sie einfach das ServiceHub.Host.Node.x86.exe zu etwas anderem. Hat mich seitdem nicht gestört. Wenn Sie es tatsächlich benötigen, benennen Sie es einfach wieder um.

Der gleiche Trick funktioniert in Adobe Photoshop, in dem auch Node aus irgendeinem Grund ausgeführt wird, den ich in meinem üblichen Workflow noch nicht entdeckt habe.


Stellt sich heraus ...

Sie können es nicht einfach umbenennen und erwarten, dass die Dinge weiter funktionieren. Wer wusste!

Anscheinend funktioniert dieser Umbenennungstrick nur, wenn Sie den VS-Prozess anhalten und Node beenden und dann VS fortsetzen. Wenn Sie versuchen, VS mit der umbenannten Node exe-Datei zu starten, stürzt das Programm beim Öffnen eines Projekts mit einem "unbekannten Hardwarefehler" ab. Während Sie an einem bereits geladenen Projekt arbeiten, wird der Lazy-Referenzzähler ebenfalls abgebrochen Die obigen Methoden und Eigenschaften funktionieren nicht, da dies anscheinend davon abhängt, dass Node irgendwie da ist.

Es kann also in Ordnung sein, den Prozess Node= anzuhalten und Windows-Paging seinen Speicher vom RAM auf die Festplatte auslagern zu lassen, ohne die EXE-Datei umzubenennen, damit Sie den VS später erneut starten können, ohne dies zu durchlaufen Wenn Sie bereit sind, mit den Konsequenzen zu leben, dann ist das kein Problem.

5
user1306322

Etwas, das den Projekten helfen kann, das Gewicht des Knotens zu verringern: Die unter Extras> Optionen> Projekte und Lösungen> Webpaketverwaltung verwendete Knotenversion wird einer installierten 64-Bit-Version neu zugewiesen. Studio startet weiterhin das interne Node für eine tsserver.js-Instanz, aber jedes TypeScript-Projekt verwendet standardmäßig die mitgelieferte Version - und dies hat mir aus erster Hand geholfen.

Ein anderes Mal, als ich feststellte, dass der Sprachdienst nicht mehr funktioniert, entdeckte ich, dass ich ein einfaches tsconfig.json über den Verzeichnissen, die als Repositorys verwendet werden, und geben Sie an, dass skipLibCheck: true, und fügen Sie node_modules hinzu, um auszuschließen - dies hat den Service enorm unterstützt, und eine Datei führt alle Ordner darunter aus, unabhängig von direkten Projektreferenzen. P.S. - Wenn Sie dennoch JavaScript Intellisense-Unterstützung wünschen, stellen Sie sicher, dass allowJs: true und noEmit: true Möglichkeit.

Zuletzt vergewissern Sie sich in den TypeScript-Optionen unter Extras> Optionen> Texteditor> Javascript/TypeScript> Projekt , dass es nicht aktiviert ist, um automatisch zu kompilieren TypeScript-Dateien, die nicht Teil eines Projekts sind , können auch Ressourcen für Hilfsprojekte von Drittanbietern mit Node oder TypeScript binden.

Diese sind nicht idiotensicher, jeder muss seinen genauen Engpass finden, aber ich habe festgestellt, dass diese oft für mich und mein Team gearbeitet haben

3
Nathan Teague

Ich stelle nur fest, dass der hohe Speicherverbrauch in der Version 15.2 (26430.04) von Visual Studio 2017 vom 10. Mai 2017 behoben wurde.

Versionshinweise hier: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Spezielle Hinweise zu diesem Fix finden Sie hier: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

1
zulumojo