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

132

Ich arbeite an einer ASP.NET-App in Visual Studio 2017 und bemerke einen Node.JS: Serverseitigen Javascript-Prozess, der mit 1,3 GB bis 1,8 GB Speicher ausgeführt wird. Mein IIS-Arbeitsprozess hat die normale Größe in VS 2015.

Meine App enthält keine Node.JS-Bibliotheken. Ich kann nicht herausfinden, wie dieser Node.JS: Serverseitige Javascript-Prozess deaktiviert werden kann. Es verbraucht zu viel Speicher für etwas, für das ich keine Verwendung habe.

Gibt es eine Möglichkeit, dies zu beenden, außer VS 2017 zu deinstallieren und wieder zu VS 2015 zu wechseln?

Geben Sie hier die Bildbeschreibung ein

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 von dem aufgenommen, was passiert ist, nachdem ich den Prozess abgebrochen und meine lokale Webseite ausgeführt habe (Entschuldigung für die Qualität, SO begrenzte Bildgröße auf 2 MB):

Geben Sie hier die Bildbeschreibung ein

Ryan Ternier
quelle
1
Verwenden Sie TypeScript?
SLaks
Wir verwenden eine kleine Menge davon.
Ryan Ternier
Ich habe diesen Prozess beendet und keine negativen Auswirkungen gesehen. Der Web-Compiler kompiliert WENIGER Dateien ohne ihn.
Glen Little
@GlenLittle Das funktioniert, aber wie die Katze ... kam es zurück. Ich frage mich, ob es etwas ist, das am Anfang installiert ist und immer läuft. Ich habe gerade VS2017 auf meinem Lappy installiert und es gab mir die Möglichkeit, den Server zu installieren. Ich werde dies aktualisieren, wenn ich es
teste
Können Sie ein Feedback dazu abgeben? Es gibt einige verschiedene Funktionen in den Webentwicklungstools, die Node under the Hood verwenden (z. B. JSLint / CSSLint / etc), die hier möglicherweise eine Rolle spielen. Diese werden für jedes Webprojekt angezeigt, nicht nur für TypeScript oder Node.
Jimmy

Antworten:

183

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

Deaktivieren Sie "Neuen JavaScript-Sprachdienst aktivieren".

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

Andy Taw
quelle
19
Diese Lösung hat geholfen, sollte positiv bewertet werden. Sie müssen Visual Studio jedoch neu starten, damit dies wirksam wird.
Mad
14
Ich habe dies getan, VS2017 neu gestartet und es hat immer noch nicht verhindert, dass "Node.js: Serverseitiges JavaScript" gestartet wurde, als ich VS2017 startete. Es ist ungefähr 800 MB groß auf meinem Computer und ich kann nicht mehr in Chrome debuggen.
Bill
1
Gleiches Problem hier @Bill - das Deaktivieren der TypeScript-Erweiterung gemäß Gabriels Antwort scheint sie jedoch sortiert zu haben.
Dunc
1
Was zum Teufel? Warum ist das in den Einstellungen des Texteditors so? : P
Sнаđошƒаӽ
3
Dies ist nicht einmal eine Option für mich in meinen Menüs
BradLaney
29

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 folgende Befehlszeile: Geben Sie hier die Bildbeschreibung ein

Tatsächlich wurde mir gesagt:

In VS 2017 sind mehrere Funktionen in JavaScript implementiert. Node.js wird von Visual Studio verwendet, um dieses JavaScript auszuführen. Unter anderem wird Node verwendet, um den Code auszuführen, 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 mich für JavaScript-Dateien zu sensibilisieren ... oder ist dies eine der Lösungen, die in VS integriert wurden, sodass weniger Speicher benötigt wird, damit dies nicht der Fall ist Die 2-GB-Grenze (4 GB) von 32-Bit-Prozessen nicht erreicht? Fragen Fragen Fragen.

Ryan Ternier
quelle
In der Tat ist es eine Sache, den Haupt-VS-Prozess reaktionsfähiger zu machen und die Leistung zu optimieren, indem bestimmte Dinge wie Intellisense in einen anderen Prozess verschoben werden und für jeden 32-Bit-Prozess mehr RAM zur Verfügung steht. Aber das ist für uns in diesem Fall nicht wichtig. Ich habe festgestellt, dass Node mehr Speicher benötigt, wenn mehr Quellcodedateien geöffnet und Intellisense aktiviert sind. Wenn Ihnen wirklich der Arbeitsspeicher ausgeht, experimentieren Sie mit der Deaktivierung von Intellisense und anderen Funktionen, auf die Sie verzichten könnten.
user1306322
2
Es hat den gegenteiligen Effekt für mich gehabt und VS2017 so faul gemacht (Wortspiel beabsichtigt), dass ich zurück zu VS2015 gehe. Ich finde es lächerlich, dass MS externe Frameworks von Drittanbietern verwenden müssen, um etwas so Einfaches wie Intellisense zu tun. Das war schon immer eine ihrer Stärken ... und jetzt? Ich habe TypeScript und Node.js deaktiviert und wenn ich mir nur Chrome VS2017 ansehe, hängt es so schlecht, dass ich manchmal neu starten muss. Also zurück zu Firefox und VS2015 für mich, zumindest für den Moment. Und dies ist auf einem i7, 16GM RAM und allen SSD-Setups mit Win10 Pro. Schockierend.
Neville
Laut dem hier genannten Beitrag ... Das Deaktivieren der TypeScript-Erweiterung ist im Moment eine Problemumgehung, zumindest für mich. Klicken Sie auf Extras, Erweiterungen und Updates, suchen Sie nach "TypeScript" und deaktivieren Sie es. Starten Sie Visual Studio neu.
Pat Capozzi
Das erklärt, warum Intellisense zur Hölle gegangen ist.
Andy
19

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.

Gabriel
quelle
1
läuft noch, nachdem ich diesen Schritten
gefolgt bin
1
Funktioniert immer noch. Das hat nichts getan.
BradLaney
16

Die Antwort von Ryan Ternier zeigte mir, was ich für die richtige Richtung halte. Das Folgen seines Links ( 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 Knotenprozess, den Sie sehen, aktiviert den JavaScript-Sprachdienst. Dieser Vorgang wird jedes Mal angezeigt, wenn Sie eine JS-Datei, eine TS-Datei oder eine Datei mit JS / TS (HTML, CSHTML usw.) bearbeiten. Dieser Prozess unterstützt IntelliSense, die Code-Navigation, die Formatierung und andere Bearbeitungsfunktionen und analysiert den gesamten Kontext Ihres Projekts. Wenn Ihr Projekt viele .js-Dateien enthält, kann dies sehr groß werden. Das Problem besteht jedoch höchstwahrscheinlich darin, dass viele Bibliotheksdateien analysiert werden. Standardmäßig scannen wir jede .js / .ts-Datei in Ihrem Projekt. Sie können dieses Verhalten jedoch überschreiben 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 zur Datei tsconfig.json hinzugefügt hatte, war das Leben wieder gut.

Ralph
quelle
Nachdem meine Seifenkiste in der vorherigen Antwort gepeitscht hat, scheint dies den Tag gerettet zu haben !!! So eine einfache Sache und doch so dunkel und ich habe nur drei Tage mit VS2017 gekämpft, um sie endlich zu finden!
Neville
Das Hinzufügen dieser Datei führte beim Erstellen des Projekts zu allen Arten von TypeScript-Fehlern. Entfernte es und die Fehler gingen weg.
John81
4

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

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


Es 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 umbenannter Node-Exe-Datei zu starten, stürzt es ab, wenn ein Projekt mit einem "unbekannten harten Fehler" geöffnet wird. Während der Arbeit an einem bereits geladenen Projekt funktioniert der verzögerte Referenzzähler über den Methoden und Eigenschaften nicht, da dies anscheinend davon abhängt, dass Node irgendwie vorhanden ist.

Daher ist es möglicherweise in Ordnung, den Knotenprozess einfach anzuhalten und Windows Paging seinen Speicher vom RAM auf die Festplatte übertragen zu lassen, ohne die Exe umzubenennen, damit Sie den VS später erneut starten können, ohne den Umbenennungsaufwand zu überwinden. Wenn Sie bereit sind, mit den Konsequenzen zu leben, dann ist das so.

user1306322
quelle
Leider denke ich, dass es einen Code gibt, der erkennt, ob der Knotenprozess nicht reagiert, und stattdessen einen neuen startet. Ich bin mit diesem Teil des VS-Codes nicht vertraut, aber so wurde er mir beschrieben.
Jimmy
Ich mag immer die Idee, mit Gewalt zu berauben , du weißt was ich meine ... ;-)
Sнаđошƒаӽ
3

Dies kann den Projekten dabei helfen, 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 seinen internen Knoten für eine tsserver.js-Instanz, aber jedes Typoskript im Projekt verwendet standardmäßig die mitgelieferte Version - und dies hat mir aus erster Hand geholfen.

Als ich ein anderes Mal feststellte, dass der Sprachdienst nicht mehr funktioniert, stellte ich fest, dass tsconfig.jsonüber den Verzeichnissen, die als Repositorys verwendet werden, ein einfaches Verzeichnis verwendet skipLibCheck: trueund node_modules zum Ausschließen angegeben und hinzugefügt wurden - eine enorme Hilfe für den Dienst, und eine Datei erledigt alle darunter liegenden Ordner es, unabhängig von direkten Projektreferenzen. PS - Wenn Sie weiterhin JavaScript Intellisense unterstützen möchten, stellen Sie sicher, dass allowJs: trueund eingestellt sindnoEmit: true Option .

Überprüfen Sie abschließend in den Typescript-Optionen unter Extras> Optionen> Texteditor> Javascript / Typescript> Projekt, ob das Kontrollkästchen Typescript-Dateien, die nicht Teil eines Projekts sind, nicht automatisch kompiliert wird, da dies auch Ressourcen für zusätzliche Projekte von Drittanbietern binden kann mit Knoten oder Typoskript.

Diese sind nicht narrensicher, jeder muss seinen genauen Engpass finden, aber ich habe festgestellt, dass diese häufig für mich und mein Team funktioniert haben

Nathan Teague
quelle
Das hat bei mir funktioniert. 'C: \ Programme \ nodejs' (wo ich NodeJS zuvor manuell installiert habe) wurde oben in dieser Liste hinzugefügt, und der Node.js-Prozess wurde von 50-60% CPU-Auslastung auf 0% erhöht.
Andynil
1

Ich möchte nur darauf hinweisen, dass der hohe Speicherverbrauch in der Version 15.2 (26430.04) von Visual Studio 2017, Version 15.2, behoben wurde.

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

Spezifische Hinweise zum Fix hier: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

zulumojo
quelle
2
Wenn Sie hier 15.2 (26430.16) ausführen, würde ich sagen, dass sie möglicherweise ein lächerlich behobenes Problem mit hohem Speicherverbrauch behoben haben, das jedoch nur zum Herabstufen auf einen hohen Speicherverbrauch herabgesetzt wurde :)
PJUK
1
Einverstanden. Das Problem ist hauptsächlich darauf zurückzuführen, wie schlecht geschrieben node.js überhaupt ist (da "Objekt" -Funktionen immer wieder repliziert werden). Andererseits werden Frameworks zum Patchen der Mängel von JS die Dinge immer langsamer machen. Dies ist, was passiert, wenn Linux-Leute für Windows entwickeln - ein großes, fettes Durcheinander.
MC9000
Ich habe dieses Problem unter github.com/aspnet/JavaScriptServices/issues/1298 gemeldet. Ich habe dieses Problem mit VS 2015 im Jahr 2015 bei den JavaScript-Projekten beobachtet, aber das Problem wird immer schlimmer.
wunderbare Welt
noch gehen 2 GB auf 2017
Geomorillo
Nicht für mich behoben. Mit Version 15.6.6
John81
0

Um Sprachdienste in VS Code zu deaktivieren, gehen Sie zu Erweiterungen, filtern Sie nach integrierten Erweiterungen und deaktivieren Sie den TypeScript / Javascript-Sprachdienst.

Ich habe dies schließlich entdeckt, nachdem der Knotendienst von VS Code meinen Server ungefähr eine Million Mal abgestürzt hat. Ärgerlich, dass es so schwer war, Dokumentation darüber zu finden.

Deaktivieren Sie die integrierte ts / js-Sprachdiensterweiterung

Ben Olayinka
quelle
0

In meinem Fall wollte Bot den Prozess node.js beenden und habe folgende Schritte unternommen, um den CPU-Verbrauch gegenüber Node.Js-Prozessen zu senken, die unter Visual Studio 2019 ausgeführt werden:

  • Ich habe den Ordner "Programme (x86) / MicrosoftSDK / TypeScript" entfernt
  • ich renne npm rebuild fsevents
  • Ich habe im Chrome-Browser deaktiviert: Einstellungen-System-Weiteres Ausführen von Hintergrund-Apps ...

Es scheint mir jetzt viel besser. Aber nicht 100% unglücklicherweise.

Hoffe das hilft auch jemandem da draußen. Viel Glück, Leute! :-)

Honza P.
quelle