私はVisual Studio 2017でASP.NETアプリケーションに取り組んでいて、Node.JS:1.3GBから1.8GBのメモリで実行されているサーバーサイドのJavascriptプロセスに気づいています。私のIISワーカープロセスは、VS 2015の標準サイズです。
私のアプリにはNode.JSライブラリは含まれていません。 Node.JS:サーバーサイドのJavascriptプロセスを無効にする方法を理解できません。それは私が役に立たない何かのためにあまりにも多くの記憶を食べています。
VS 2017をアンインストールしてVS 2015に戻す以外に、これを強制終了する方法はありますか?
タスクマネージャでメインプロセスを終了しても、VS内では何も影響を受けませんが、[詳細]タブに移動して実行中の個々のプロセスを終了すると、Visual Studioがクラッシュします。プロセスを終了してローカルWebページを実行した後に何が起こったのかをビデオで撮影しました(品質のためごめん、SO画像サイズは2MBに制限されています)。
ツール>オプション>テキストエディタ> JavaScript/TypeScript>言語サービス...
[新しいJavaScript言語サービスを有効にする]のチェックを外します。
これにより、NodeJSプロセスが開始されなくなります。
私はこの問題について意見を述べました:
私はMSチームから返答を得ました - 彼は私にこの投稿を指示しました:
事実上私は言われました:
VS 2017では、いくつかの機能がJavaScriptで実装されています。 Node.jsは、そのJavaScriptを実行するためにVisual Studioによって使用されます。特にNodeは、ユーザーがTypeScriptまたはJavaScriptを編集しているときにフォーマットおよびインテリセンスサービスを提供するコードを実行するために使用されます。これは、VS 2015からの変更点です。
それは私の質問に答えますが、もう1つ明らかにすることができます - なぜJavaScriptファイルを理解するのに1.4GBのメモリが必要なのでしょうか...これはVSに組み込まれたソリューションです。 32ビットプロセスの2GB(4GB)の限界に到達しませんか?質問質問質問です。
Visual StudioでTypeScriptサポートを無効にする必要があります。
ツール>拡張機能とアップデート> TypeScript for Microsoft Visual Studio>無効にする
その後、Visual Studioを再起動してください。
Ryan Ternierの答えは私が正しい方向であると信じるもので私を指摘しました。彼のリンクをたどって( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 )受け入れられた答えの真下で、Bowden Kellyの答えに私を導いた。
これがボーデンケリーの答えです。
あなたが目にしているノードプロセスはJavaScript言語サービスに力を与えています。このプロセスは、JSファイル、TSファイル、またはJS/TSが含まれているファイル(html、cshtmlなど)を編集するときに必ず表示されます。このプロセスは、IntelliSense、コードナビゲーション、書式設定、およびその他の編集機能を強化するものです。これは、プロジェクトのコンテキスト全体を分析することによって行われます。プロジェクト内に大量の.jsファイルがあると、サイズが大きくなる可能性がありますが、おそらく問題となるのは、分析対象のライブラリファイルが多数あることです。デフォルトでは、プロジェクト内のすべての.js/.tsファイルがスキャンされます。しかし、この振る舞いをオーバーライドして、自分のコードだけに焦点を合わせるように言語サービスを調整することができます。これを行うには、次の設定を使用してプロジェクトルートにtsconfig.jsonを作成します。
{ "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 ] } }
私のすべてのスクリプトライブラリのあるフォルダをtsconfig.jsonファイルに追加すると、元気になりました。
これまでで最も厄介な回避策:単にServiceHub.Host.Node.x86.exe
を別の名前に変更するだけです。それ以来私を悩ませていません。あなたが実際にそれを必要とするときは(もし)、名前を元に戻すだけです。
同じ手口がAdobe Photoshopでも機能します。AdobePhotoshopも、私が通常のワークフローでまだ発見していない何らかの理由でNodeを実行しています。
名前を変更して、物事がうまくいくと期待することはできません。誰かわかったね!
どうやらこのリネームのトリックはあなたがVSプロセスを中断してNodeをkillしてからVSを再開した場合にのみ有効です。 Node exeファイルの名前を変更してVSを起動しようとすると、「不明なハードエラー」でプロジェクトを開くときにクラッシュします。また、既にロードされているプロジェクトで作業している間は、メソッドやプロパティの上の遅延参照カウンタは機能しません。なぜならそれはどうにかそこにあるNodeに依存しているからです。
そのため、exeファイルの名前を変更せずに、Nodeプロセスを一時停止し、WindowsのページングでメモリをRAMからハードドライブにスワップアウトさせることで、名前の変更の手間をかけずにVSを再開できます。あなたがその結果と共存しても構わないと思っているなら、それはそうです。
プロジェクトがnodejsの重みを軽減するのを助けることができる何か:ツール>オプション>プロジェクトとソリューション> Webパッケージ管理の下で使用されるノードバージョンをインストールされた64ビットバージョンに再割り当てすることです。 Studioはtsserver.jsインスタンスの内部ノードを起動しますが、プロジェクト内のTypeScriptはデフォルトで提供されているバージョンになります - これが私を直接手助けしてくれました。
また、言語サービスが停止していることが判明したとき、リポジトリとして使用されているディレクトリの上に単純なtsconfig.json
を使用し、skipLibCheck: true
を指定して除外するnode_modulesを追加しました直接のプロジェクト参照に関係なく、その下のフォルダー。 P.S - それでもJavaScriptのインテリセンスサポートが必要な場合は、必ずallowJs: true
およびnoEmit: true
オプションを設定してください。
最後に、ツール>オプション>テキストエディタ> Javascript/TypeScript>プロジェクトの下のTypeScriptオプションで、チェックされていないことを確認してください。そのため、プロジェクトの一部を使用すると、nodeまたはTypeScriptを使用して補助的なサードパーティプロジェクトのリソースを拘束することもできます。
これらは絶対確実なものではなく、それぞれが正確なボトルネックを見つけなければなりませんが、私は私と私のチームのために働いてきました。
2017年5月10日のVisual Studio 2017バージョン15.2(26430.04)リリースで、メモリの大量消費が修正されたことに注目してください。
リリースノートはこちら: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes
ここで修正に関する特定のメモ: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html