我可以关闭与 Visual Studio 2017相关的 Node.js 服务器进程吗?

我正在 Visual Studio 2017中开发一个 ASP.NET 应用程序,我注意到一个 “ Node.js: 服务器端 JavaScript”进程在1.3 GB 到1.8 GB 的内存中运行。我的 IIS辅助进程是 VisualStudio2015中的正常大小。

我的应用程序不包含任何 Node.js 库。我不知道如何关闭这个 Node.js: Server-side JavaScript 进程。它占用了我太多的记忆,而我对它毫无用处。

除了卸载 VisualStudio2017并切换回 VisualStudio2015之外,还有什么方法可以消除这个问题吗?

Enter image description here

关闭任务管理器中的主进程不会影响 VisualStudio 中的任何内容。但是,如果我转到 细节选项卡并杀死各个正在运行的进程,它会使 VisualStudio 崩溃。我拍了一段视频,记录了在我终止这个过程后发生的事情,然后运行了我的本地网页(对于质量抱歉; Stack Overflow 将图像大小限制为2MB) :

Enter image description here

35846 次浏览

有史以来最肮脏的解决方案: 只需将 ServiceHub.Host.Node.x86.exe重命名为其他名称即可。从那以后我就不再为此烦恼了。如果你真的需要它,只需要重新命名它。

同样的技巧也适用于运行 Node.js 的 Adobe PS 的,不知道为什么,我还没有在我通常的工作流中发现这一点。


结果..。

你不能只是重新命名它,然后指望它继续工作,谁知道呢!

显然,这种重命名技巧只有在挂起 Visual Studio 进程、杀死 Node.js 然后恢复 Visual Studio 时才有效。如果您尝试使用重命名的 Node.js EXE文件启动 Visual Studio,那么当打开一个具有“未知硬错误”的项目时,它将崩溃。

另外,在处理已经加载的项目时,方法和属性上面的惰性引用计数器不会工作,因为显然它依赖于 Node.js 的存在。

因此,可以暂停 Node.js 进程,让 Windows 分页将内存从 RAM 交换到硬盘上,而不用重命名 EXE 文件,这样以后就可以重新启动 Visual Studio,而无需重命名的麻烦。如果你愿意承担后果的话。

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

VisualStudio2017-Node.js 服务器进程-关闭?

我收到了微软团队的回复——他指示我看这篇文章:

Js 服务器端 JavaScript 进程消耗太多内存

Node Exe进程具有命令行:

Enter image description here

实际上,我被告知:

在 VisualStudio2017中,有几个特性是用 JavaScript 实现的。Js 被 Visual Studio 用来运行这个 JavaScript。当用户编辑 TypeScript 或 JavaScript 时,Node 用于运行提供格式化和 智能感应服务的代码。这是对 VisualStudio2015的更改。

在菜单 工具选择文本编辑器JavaScript/TypeScript语言服务..。:

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

重新启动 VisualStudio

这似乎阻止了 Node.js 进程的启动。

必须在 VisualStudio 中禁用 TypeScript 支持:

菜单 工具扩展及更新用于 MicrosoftVisualStudio 的 TypeScript关闭

之后,只需重新启动 VisualStudio,就可以开始了。

瑞安 · 特尼尔的回答为我指明了正确的方向。在 他的链接之后,我找到了鲍登 · 凯利的答案,就在公认的答案下面。

以下是鲍登•凯利(Bowden Kelly)的回答:

您看到的节点进程正在为 JavaScript 语言服务提供动力。在编辑 JS 文件、 TS 文件或任何包含 JS/TS 的文件(html、 cshtml 等)时,您都会看到这个过程出现。这个过程支持智能感知、代码导航、格式化和其他编辑特性,它通过分析项目的整个上下文来实现这一点。如果你有很多。在您的项目中使用 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文件中,生活又变得美好起来。

我只是想指出,在 Visual Studio 2017(版本15.2,26430.04)的2017-05-10版本中,高内存消耗已经得到了修复。

发行说明在 Visual Studio 2017 version 15.9 Release Notes

关于此修复的具体说明如下 Js 服务器端 JavaScript 进程消耗了太多的内存

可以帮助项目减轻 Node.js 重量的方法是将菜单 工具选择项目及解决方案网络包管理下使用的节点版本重新分配到安装的64位版本。Visual Studio 仍然会为 Tsserver.js实例启动它的内部 Node.js 进程,但是项目中的任何 TypeScript 代码都会默认为提供的版本——这对我有第一手的帮助。

此外,还有一次我发现语言服务正在运行,我发现在用作存储库的目录上使用一个简单的 Tsconfig.json文件,并指定为 skipLibCheck: true,然后添加 Node _ module来排除ーー这对服务非常有帮助,一个文件处理它下面的所有文件夹,而不管直接的项目引用。附注: 如果您仍然希望 JavaScript 智能化支持,请确保设置 allowJs: truenoEmit: true选项。

最后,在菜单 工具选择文本编辑器JavaScript/Type 脚本工程项目的 TypeScript 选项中确认它没有被检查到 自动编译不属于项目的 TypeScript 文件,因为这也会占用使用 Node.js 或 TypeScript 的辅助第三方项目的资源。

这些并非万无一失。每个人都必须找到自己的确切瓶颈,但我发现这些方法对我和我的团队来说通常都很管用。

要在 VisualStudio 代码中禁用 语文服务,请转到扩展,然后对内置扩展进行过滤,并禁用 TypeScript/JavaScript 语言服务。

在 Visual Studio Code 的 Node.js 服务使我的服务器崩溃了大约一百万次之后,我终于发现了这一点。这很烦人,因为很难找到关于它的文档。

Disable the built-in TypeScript/JavaScript language service extension

在我的例子中,我不想终止 Node.Js 进程,我做了以下事情来降低运行在 Visual Studio 2019下的 Node.Js 进程的 CPU 消耗:

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

现在看起来好多了,但不是100% 的不幸。