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

Visual Studio 2017 - Node.JS Server Process - Turn off?

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

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

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

在任务管理器中终止主进程不会影响 VS 中的任何内容,但是如果我转到“详细信息”选项卡并终止单个 运行 进程,它会崩溃 Visual Studio。我拍了一段视频,记录了我终止进程和 运行 我的本地网页后发生的事情(对质量感到抱歉,因此将图像大小限制为 2MB):

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

同样的技巧在 Adob​​e Photoshop 中也有效,它也运行 Node,出于某种原因我在我通常的工作流程中还没有发现。


原来...

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

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

所以可以只暂停 Node 进程并让 Windows 分页将其内存从 ram 交换到硬盘驱动器上,而不重命名 exe,这样您可以稍后再次启动 VS 而无需通过重命名的麻烦。如果你愿意承担后果,那就是。

我提出了关于这个问题的反馈:

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

我收到了 MS 团队的回复 - 他指示我这样做 post:

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

node.exe进程有命令行:

实际上我被告知:

在 VS 2017 中,JavaScript 实现了多项功能。 Node.js 被 Visual Studio 用于 运行 即 JavaScript。除其他外,Node 用于 运行 在用户编辑 TypeScript 或 JavaScript 时提供格式化和智能感知服务的代码。这是对 VS 2015 的更改。

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

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

取消选中 'Enable the new JavaScript language service'。

重启Visual Studio

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

您必须在 Visual Studio:

上禁用 TypeScript 支持

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

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

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

这是 Bowden Kelly 的回答:

The node process you are seeing is powering the JavaScript language service. You will see this process appear anytime you edit a JS file, TS file, or any file with JS/TS inside (html, cshtml, etc). This process is what powers IntelliSense, code navigation, formatting, and other editing features and it does this by analyzing the entire context of your project. If you have a lot of .js files in your project, this can get large, but more than likely the issue is that you have a lot of library files that are being analyzed. By default, we will scan every .js/.ts file in your project. But you can override this behavior and tune the language service to only focus on your code. To do this create a tsconfig.json in your project root with the following settings:

    {
    "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 文件后,生活再次变得美好起来。

请注意,高内存消耗已在 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

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

此外,还有一次我发现语言服务 运行 宕机,我发现在用作存储库的目录上方使用简单的 tsconfig.json,并指定为 skipLibCheck: true,并且添加 node_modules 以排除 - 对服务有很大帮助,一个文件可以处理它下面的所有文件夹,无论直接项目引用如何。 P.S。 -- 如果您仍然需要 JavaScript 智能感知支持,请确保设置 allowJs: truenoEmit: true 选项。

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

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

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

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

在我的例子中,我确实想让机器人杀死 node.js 进程,我做了以下事情来降低 CPU 在 运行 下 Node.Js 进程的消耗28=] 2019:

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

现在好像好多了。但不幸的是,不是 100%。

希望这也能帮助其他人。祝大家好运! :-)