Visual Studio 2017 - Node.JS服务器进程 - 关闭?

时间:2017-03-13 16:49:17

标签: node.js asp.net-mvc visual-studio-2017

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

我的应用不包含任何Node.JS库。我无法弄清楚如何关闭此Node.JS:服务器端Javascript进程。它为我无用的东西吃掉了太多的记忆。

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

enter image description here

在任务管理器中杀死主进程并不会影响VS中的任何内容,但是如果我转到“详细信息”选项卡并终止单个正在运行的进程,则会导致Visual Studio崩溃。我拍摄了一段视频,说明我杀了这个过程后发生了什么,并运行了我的本地网页(对不起质量,SO图像尺寸限制为2MB):

enter image description here

8 个答案:

答案 0 :(得分:157)

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

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

这似乎阻止NodeJS进程启动。

答案 1 :(得分:27)

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

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进程有命令行: enter image description here

有效地我被告知:

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

它回答了我的问题,但揭示了另一个问题 - 为什么你需要1.4GB的内存来给我智能感知JavaScript文件...或者这是VS内置的解决方案之一所以它使用更少的内存所以它没有达到32位进程的2GB(4GB)限制?问题问题。

答案 2 :(得分:18)

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

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

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

答案 3 :(得分:16)

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

这是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文件中,生活就再好了。

答案 4 :(得分:5)

有史以来最肮脏的解决方法:只需将ServiceHub.Host.Node.x86.exe重命名为其他内容即可。从那以后就没有打扰过我。当(如果)你真的需要它时,只需将其重命名。

同样的技巧也适用于Adobe Photoshop,由于某种原因我还没有在我平常的工作流程中发现它也运行Node。

结果......

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

显然这个重命名技巧只有在你暂停VS进程并终止节点然后恢复VS时才有效。如果您尝试使用重命名的Node exe文件启动VS,则在打开具有“未知硬错误”的项目时会崩溃。此外,在处理已经加载的项目时,方法和属性上方的惰性引用计数器将无法工作,因为显然依赖于Node在某种程度上存在。

因此,暂停Node进程并让Windows分页从ram交换到硬盘驱动器上可能没问题,而无需重命名exe,因此您可以在以后再次启动VS而无需重命名麻烦。如果你愿意接受后果,那就是。

答案 5 :(得分:3)

可以帮助项目减轻nodejs权重的东西:是重新分配工具>下使用的节点版本。选项>项目和解决方案> Web包管理到已安装的64位版本。 Studio仍将为tsserver.js实例启动其内部节点,但项目中的任何打字稿都将默认为提供的版本 - 这对我有所帮助。

此外,另一次我发现语言服务正在运行时,我发现在用作存储库的目录上方使用了一个简单的tsconfig.json,并指定为skipLibCheck: true,并添加了node_modules以排除 - 无论是直接的项目引用,一个文件都会在它下面提供帮助。附: - 如果您确实需要JavaScript智能感知支持,请务必设置allowJs: truenoEmit: true选项。

最后,在工具>下的Typescript选项中进行验证。选项>文本编辑器> Javascript / Typescript>项目未检查自动编译不属于项目的Typescript文件,因为这样也可以使用节点或打字稿来占用辅助第三方项目的资源。

这些都不是万无一失的,每个人都必须找到他们的确切瓶颈,但我发现这些对我和我的团队来说都很有用

答案 6 :(得分:1)

注意到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

答案 7 :(得分:0)

就我而言,我确实是机器人想要杀死node.js进程,并且做了以下事情来降低在Visual Studio 2019下运行的Node.Js进程的CPU消耗:

  • 我删除了文件夹“ Program Files(x86)/ MicrosoftSDK / TypeScript
  • 我运行npm rebuild fsevents
  • 我在Chrome浏览器中关闭了:设置-系统-继续运行后台应用程序...

在我看来,现在好多了。但并非100%不幸。

希望这也可以帮助某个人。祝大家好运! :-)