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


132

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

我的应用程序不包含任何Node.JS库。我不知道如何关闭此Node.JS:服务器端Javascript进程。我没有用的东西占用了太多的内存。

除了卸载VS 2017并切换回VS 2015之外,还有其他方法可以消除这种情况吗?

在此处输入图片说明

在Task Manager中杀死主进程不会影响VS中的任何内容,但是,如果我转到“详细信息”选项卡并杀死单个正在运行的进程,它将使Visual Studio崩溃。我拍了一段视频,了解终止进程并运行本地网页后发生的情况(抱歉,质量有限,图像大小限制为2MB):

在此处输入图片说明


1
您正在使用TypeScript吗?
SLaks

我们正在使用少量。
瑞安·特尼尔

我已经结束了该过程,还没有看到任何不良影响。Web编译器将在没有它的情况下编译LESS文件。
格伦·里特(Glen Little)

@GlenLittle那确实可行,但就像猫一样……它回来了。我想知道它是否在一开始就已安装并且始终在运行。我刚刚在lappy上安装了VS2017,它为我提供了安装服务器的选项。我在测试时会对此进行更新
Ryan Ternier

您可以提出有关此问题的反馈吗?Web开发工具中有一些不同的功能,它们可能在这里使用幕​​后的Node(例如JSLint / CSSLint / etc)。这些将显示在任何Web项目中,而不仅仅是TypeScript或Node。
吉米

Answers:


183

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

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

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


19
该解决方案有所帮助,应该予以支持。但是您需要重新启动Visual Studio才能生效。
madd

14
我这样做了,重新启动了VS2017,但在启动VS2017时仍然无法阻止“ Node.js:服务器端JavaScript”的启动。它在我的计算机上占用了约800MB的空间,因此我无法再在Chrome中调试。
比尔

1
@Bill此处存在同样的问题-根据Gabriel的回答禁用TypeScript扩展似乎已经对其进行了排序。
邓克(Dunc)'17年

1
我勒个去?为什么在“文本编辑器”设置中这样做?:P
Sнаđошƒаӽ

3
我的菜单中甚至没有这个选项
BradLaney

29

我对此问题提出了反馈:

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-using-to.html?childToView=27629#comment-27629

node.exe进程具有命令行: 在此处输入图片说明

实际上,有人告诉我:

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

它回答了我的问题,但又提出了另一个问题-为什么您需要1.4GB的内存才能使我对JavaScript文件具有智能感知能力?或者这是VS内置的解决方案之一,所以它使用较少的内存,因此它不会没有达到32位进程的2GB(4GB)限制?问题问题问题。


的确,通过将诸如Intellisense之类的某些东西拖延到另一个进程中,并使每个32位进程有更多的内存,可以使主要VS进程具有更好的响应能力并优化性能。但这对我们来说并不重要。我发现,如果您打开了更多的源代码文件并启用了Intellisense,Node将消耗更多的内存。如果您的内存确实不足,请尝试禁用Intellisense和其他您无法做到的功能。
user1306322

2
它对我产生了相反的影响,并使VS2017变得如此懒惰(双关语意),以至于我要回到VS2015。我发现MS必须使用第三方外部框架来做像Intellisense这样简单的事情有点荒谬。那一直是他们的优势之一……现在呢?我已禁用TypeScript和Node.js,如果仅看Chrome VS2017挂起得非常厉害,我有时不得不重启。所以至少对于我来说,回到Firefox和VS2015。这是在i7、16GM RAM和Win10 Pro的所有SSD设置上。令人震惊
内维尔,

根据此处引用的文章...禁用TypeScript扩展目前暂时可以解决,至少对于我而言。单击工具,扩展和更新,搜索“ TypeScript”并将其禁用。重新启动Visual Studio。
pat capozzi

好吧,这说明了Intellisense为何下地狱。
安迪

19

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

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

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


1
我遵循此步骤后仍在运行
Jervie Vitriolo

1
仍在运行。这什么也没做。
BradLaney

16

瑞安·特尼尔(Ryan Ternier)的回答向我指出了我认为正确的方向。跟随他的链接(https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-using-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文件中,生活就再好了。


在我的肥皂盒在上一个答案中发出呜呜声之后,这似乎挽救了这一天!!!如此简单的事情却如此晦涩难懂,只花了我三天时间与VS2017作战,终于找到了这个!
内维尔,

当我构建项目时,添加此文件会导致各种TypeScript错误。删除它,错误消失了。
John81的

4

有史以来最肮脏的解决方法:只需将其重命名ServiceHub.Host.Node.x86.exe为其他名称即可。从那以后再也没有打扰过我。如果确实需要,请重新命名。

相同的技巧在Adobe Photoshop中也有效,由于某些原因,我还可以在通常的工作流程中找到它,因此它也可以运行Node。


原来...

您不能只是将其重命名并期望它继续工作。谁知道!

显然,仅当您暂停VS进程并杀死Node然后恢复VS时,此重命名技巧才有效。如果您尝试以更名为Node exe文件的形式启动VS,则在打开带有“未知硬错误”的项目时,它将崩溃。另外,在处理已经加载的项目时,上面的方法和属性的惰性引用计数器将不起作用,因为显然这依赖于Node是否以某种方式存在。

因此,可以暂停Node进程,让Windows分页将其内存从ram换出到硬盘驱动器上,而不重命名exe,这样您以后就可以再次启动VS而无需经历重命名的麻烦了。如果您愿意承受后果,那就是。


不幸的是,我认为有一些代码可以检测节点进程是否没有响应,并启动一个新的代码。我不熟悉VS代码的那部分,但这就是我所描述的。
吉米

我一直喜欢的想法被剥夺了力,你知道我的意思... ;-)
Sнаđошƒаӽ

3

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

另外,又一次,我发现语言服务正在运行,我发现tsconfig.json在用作存储库的目录上方使用了一个简单的命令,并指定到skipLibCheck: true,并添加了node_modules来排除-极大地帮助了该服务,并且一个文件执行了下面的所有文件夹不论直接引用的项目如何。PS-如果您仍然想要JavaScript intellisense支持,请确保设置allowJs: trueand noEmit: true选项。

最后,在“ 工具”>“选项”>“文本编辑器”>“ Javascript / Typescript”>“项目”下的“ Typescript选项”中,检查是否未选中“ 自动编译不属于项目的Typescript文件”,因为这还会占用辅助的第三方项目资源使用节点或打字稿。

这些并不是万无一失的,每个人都必须找到自己确切的瓶颈,但是我发现这些方法对我和我的团队很有用


这对我有用。在此列表的顶部添加了“ C:\ Program Files \ nodejs”(我以前手动安装过NodeJS),Node.js进程从50-60%的CPU负载变为0%。
andynil '18

1

只是注意到高内存消耗已在2017年5月10日-Visual Studio 2017版本15.2(26430.04)中修复。

此处的发行说明:https : //www.visualstudio.com/zh-cn/news/releasenotes/vs2017-relnotes

有关此修复程序的特定说明:https : //developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-using-to.html


2
在这里运行15.2(26430.16),我想说的是,他们解决了一个荒谬的问题-高内存消耗问题,但只能将其降级为高内存消耗:)
PJUK

1
同意 问题主要是由于一开始编写的node.js编写得很差(因为一遍又一遍地复制了“对象”功能)-然后,修补JS缺点的框架总是会使事情变慢。当您有Linux人员为Windows开发时,就会发生这种情况,这是一个令人费解的大麻烦。
MC9000

我在github.com/aspnet/JavaScriptServices/issues/1298上报告了此问题,我在2015年通过JavaScript项目在VS 2015中观察到了此问题,但问题变得更加严重。
精彩世界

stil在2017
增长

对我来说不固定。版本15.6.6
John81 '18

0

要在VS Code中禁用语言服务,请转至扩展名,然后过滤内置扩展名并禁用TypeScript / Javascript语言服务。

在VS代码的节点服务使我的服务器崩溃大约一百万次之后,我终于发现了这一点。令人讨厌的是,很难找到有关它的文档。

禁用内置的ts / js语言服务扩展


0

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.