Visual Studio 2017 – Node.JS服务器进程 – closures?

我正在使用Visual Studio 2017中的ASP.NET应用程序,我注意到一个Node.JS:运行在1.3GB到1.8GB内存的服务器端Javascript进程。 我的IIS工作进程是它在VS 2015中的正常大小。

我的应用程序不包含任何Node.JS库。 我无法弄清楚如何closures这个Node.JS:服务器端Javascript进程。 对于我没有用的东西来说,它消耗了太多的记忆。

除了卸载VS 2017并切换回VS 2015之外,还有什么办法可以解决这个问题吗?

在这里输入图像说明

杀死任务pipe理器中的主进程不会影响VS中的任何内容,但是如果我转到“详细信息”选项卡并杀死单个正在运行的进程,则会使Visual Studio崩溃。 我拍了一个video,说明我杀了这个程序后,跑了我的本地网页(对不起,因为图片大小限制在2MB以内):

在这里输入图像说明

工具>选项>文本编辑器> JavaScript / TypeScript>语言服务…

取消选中“启用新的JavaScript语言服务”。

这似乎阻止了NodeJS进程启动。

您必须在Visual Studio上禁用TypeScript支持:

工具>扩展和更新>用于Microsoft Visual Studio的TypeScript>禁用

之后,只需重新启动Visual Studio,你就可以走了。

我就这个问题提出了反馈意见:

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

我从一个MS团队得到了回复 – 他指示我这个职位:

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

node.exe进程具有命令行: 在这里输入图像说明

有效地告诉我:

在VS 2017中,JavaScript中实现了一些function。 Node.js被Visual Studio用来运行该JavaScript。 除此之外,Node用于在用户编辑TypeScript或JavaScript时运行提供格式化和智能感知服务的代码。 这是从2015年的变化。

它回答了我的问题,但是却揭示了另一个问题 – 为什么你需要1.4GB的内存才能给我提供JavaScript文件的智能感知……或者这是VS内置的解决scheme之一,所以它使用较less的内存,因此它不会没有达到32位进程的2GB(4GB)限制? 提问问题。

Ryan Ternier的回答指出我认为是正确的方向。 在他的链接( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 )引导我Bowden凯利的答案,就在被接受的答案之下。

这是Bowden Kelly的回答:

您所看到的节点进程正在为JavaScript语言服务提供支持。 当你编辑一个JS文件,TS文件或任何带JS / TS的文件(html,cshtml等)时,你会看到这个过程出现。 这个过程是智能感知,代码导航,格式化和其他编辑function的function,它通过分析项目的整个上下文来完成。 如果你的项目中有很多的.js文件,这可能会变得很大,但很可能问题在于你有很多正在分析的库文件。 默认情况下,我们将扫描项目中的每个.js / .ts文件。 但是你可以覆盖这个行为,并调整语言服务,只关注你的代码。 为此,请使用以下设置在项目根目录中创build一个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中运行,由于某些原因,我还没有在平常的工作stream程中发现它。


原来…

你不能只是重命名它,并期望事情继续工作。 谁知道!

显然这个重命名技巧只有当你暂停VS进程并杀死节点,然后恢复VS. 如果您尝试启动与重命名节点exe文件的VS,它会崩溃时打开一个“未知的硬错误”的项目。 另外,在处理一个已经加载的项目的时候,在方法和属性之上的延迟引用计数器将不起作用,因为显然依赖于在那里的节点。

因此,暂停Node进程或让Windows分页将其内存从ram中移出到硬盘上可能没有问题,也不需要重命名exe文件,以便以后可以重新启动VS而不必重新命名。 如果你愿意承受后果,那就是。

只是注意到,高内存消耗已经在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