我正在使用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崩溃。我拍摄了一段视频,说明我杀了这个过程后发生了什么,并运行了我的本地网页(对不起质量,SO图像尺寸限制为2MB):
答案 0 :(得分:157)
工具>选项>文本编辑器> JavaScript / TypeScript>语言服务......
取消选中'启用新的JavaScript语言服务'。
这似乎阻止NodeJS进程启动。
答案 1 :(得分:27)
我就此问题提出了反馈意见:
我得到了一个MS团队的回复 - 他指示我这篇文章:
有效地我被告知:
在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: true
和noEmit: 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
答案 7 :(得分:0)
就我而言,我确实是机器人想要杀死node.js进程,并且做了以下事情来降低在Visual Studio 2019下运行的Node.Js进程的CPU消耗:
npm rebuild fsevents
在我看来,现在好多了。但并非100%不幸。
希望这也可以帮助某个人。祝大家好运! :-)