Visual Studio 2017 - Node.JS 服务器进程 - 关闭?
Posted
技术标签:
【中文标题】Visual Studio 2017 - Node.JS 服务器进程 - 关闭?【英文标题】:Visual Studio 2017 - Node.JS Server Process - Turn off? 【发布时间】:2017-08-03 19:00:48 【问题描述】:我正在 Visual Studio 2017 中开发一个 ASP.NET 应用程序,我注意到一个 Node.JS:运行在 1.3GB 到 1.8GB 内存的服务器端 javascript 进程。我的 IIS 工作进程是 VS 2015 中的正常大小。
我的应用不包含任何 Node.JS 库。我不知道如何关闭这个 Node.JS: Server-side Javascript process off。对于我没用的东西,它占用了太多内存。
除了卸载 VS 2017 并切换回 VS 2015 之外,还有其他方法可以解决这个问题吗?
在任务管理器中终止主进程不会影响 VS 中的任何内容,但是如果我转到详细信息选项卡并终止各个正在运行的进程,它会使 Visual Studio 崩溃。在我终止进程并运行我的本地网页后,我拍摄了一段视频(抱歉质量问题,因此将图像大小限制为 2MB):
【问题讨论】:
你在使用 TypeScript 吗? 我们正在使用少量。 我已经结束了这个过程并且没有看到任何不良影响。 Web 编译器在没有它的情况下编译 LESS 文件。 @GlenLittle 这确实有效,但就像猫一样......它回来了。我想知道它是否是在开始时安装的并且一直在运行。我刚刚在我的笔记本电脑上安装了 VS2017,它给了我安装服务器的选项。我会在测试时更新它 你能提交一个反馈项目吗?在后台使用 Node 的 Web 开发工具中有一些不同的功能(例如 JSLint/CSSLint/etc),可能会涉及到这些功能。这些将出现在任何 Web 项目中,而不仅仅是 TypeScript 或 Node。 【参考方案1】:工具 > 选项 > 文本编辑器 > JavaScript/TypeScript > 语言服务...
取消选中“启用新的 JavaScript 语言服务”。
重启 Visual Studio
这似乎阻止了 NodeJS 进程的启动。
【讨论】:
这个解决方案有帮助,应该被赞成。但是您需要重新启动 Visual Studio 才能使其生效。 我这样做了,重新启动了 VS2017,当我启动 VS2017 时,它仍然没有阻止“Node.js:服务器端 JavaScript”的启动。它在我的机器上占用了大约 800MB,我无法再在 Chrome 中调试。 @Bill 这里也有同样的问题——按照 Gabriel 的回答禁用 TypeScript 扩展似乎已经解决了。 什么鬼?为什么在文本编辑器设置中这样做? :P 这甚至不是我的菜单中的选项【参考方案2】:我就这个问题提出了反馈:
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 进程有命令行:
实际上有人告诉我:
在 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 和其他您可以不用的功能。 它对我产生了相反的效果,让 VS2017 变得如此懒惰(双关语),以至于我要回到 VS2015。我发现 MS 必须使用 3rd 方外部框架来做一些像 Intellisense 这样简单的事情,这很荒谬。这一直是他们的优势之一……现在呢?我已经禁用了 TypeScript 和 Node.js,如果我只看 Chrome VS2017 挂起这么严重,我有时不得不重新启动。所以回到我的 Firefox 和 VS2015,至少现在是这样。这是在 i7、16GM RAM 和所有带有 Win10 Pro 的 SSD 设置上。令人震惊。 根据此处引用的帖子...禁用 TypeScript 扩展目前是一种解决方法,至少对我来说是这样。单击工具、扩展和更新,搜索“TypeScript”并将其禁用。重新启动 Visual Studio。 嗯,这就解释了为什么 Intellisense 已经下地狱了。【参考方案3】:您必须在 Visual Studio 上禁用 TypeScript 支持:
工具 > 扩展和更新 > TypeScript for Microsoft Visual Studio > 禁用
之后,只需重新启动 Visual Studio,就可以开始了。
【讨论】:
按照这些步骤操作后仍在运行 仍在运行。这没有任何作用。【参考方案4】:Ryan Ternier 的回答为我指明了我认为正确的方向。按照他的链接 (https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-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 错误。删除它,错误就消失了。【参考方案5】:有史以来最肮脏的解决方法:只需将 ServiceHub.Host.Node.x86.exe
重命名为其他名称。从那以后就没有打扰过我。当(如果)您确实需要它时,只需将其重命名即可。
同样的技巧也适用于 Adobe Photoshop,由于某种原因,我在通常的工作流程中还没有发现它也运行 Node。
原来...
您不能只是重命名它并期望它继续工作。谁知道!
显然,这种重命名技巧只有在您暂停 VS 进程并杀死 Node,然后恢复 VS 时才有效。如果您尝试在重命名 Node exe 文件的情况下启动 VS,则在打开带有“未知硬错误”的项目时它将崩溃。此外,在处理已经加载的项目时,上面的方法和属性的惰性引用计数器将不起作用,因为显然这依赖于 Node 以某种方式存在。
因此,只需暂停 Node 进程并让 Windows 分页将其内存从 ram 交换到硬盘驱动器,而不重命名 exe,这样您就可以稍后再次启动 VS,而无需经历重命名的麻烦。如果你愿意承受后果,那就是。
【讨论】:
不幸的是,我认为有一些代码可以检测节点进程是否无响应并启动一个新进程。我不熟悉 VS 代码的那部分,但我是这样描述的。 我一直喜欢强制剥夺的想法,你懂我的意思... ;-)【参考方案6】:可以帮助项目减轻 nodejs 重量的方法是:将 工具 > 选项 > 项目和解决方案 > Web 包管理 下使用的节点版本重新分配给已安装的 64 位版本。 Studio 仍会为 tsserver.js 实例启动其内部节点,但项目中的任何打字稿都将默认为提供的版本——这直接帮助了我。
另外,当我发现语言服务正在运行时,我发现在用作存储库的目录上方使用简单的tsconfig.json
,并指定为skipLibCheck: true
,并添加 node_modules 以排除 - 极大地帮助了服务,并且一个文件处理它下面的所有文件夹,而不管直接的项目引用。附言-- 如果您仍然想要 JavaScript 智能感知支持,请确保设置 allowJs: true
和 noEmit: true
选项。
最后,在 工具 > 选项 > 文本编辑器 > Javascript/Typescript > 项目 下的 Typescript 选项中验证是否未检查 自动编译不属于project 因为这也可以使用节点或打字稿占用辅助 3rd 方项目的资源。
这些都不是万无一失的,每个人都必须找到他们确切的瓶颈,但我发现这些对我和我的团队经常有用
【讨论】:
这对我有用。将“C:\Program Files\nodejs”(我之前手动安装过 NodeJS)添加到此列表的顶部,并且 Node.js 进程从 50-60% CPU 负载变为 0%。【参考方案7】:请注意,高内存消耗已在 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
【讨论】:
在这里运行 15.2 (26430.16),我想说他们可能修复了一个荒谬的高内存消耗问题,但只是设法将其降级为高内存消耗 :) 同意。问题主要是由于 node.js 的编写首先是糟糕的(因为“对象”函数被一遍又一遍地复制)——然后,修补 JS 缺点的框架总是会让事情变得更慢。当你让 Linux 人员为 Windows 开发时,就会发生这种情况 - 一个大而复杂的混乱。 我在github.com/aspnet/JavaScriptServices/issues/1298 报告了这个问题,我在 2015 年的 JavaScript 项目中观察到了 VS 2015 的这个问题,但问题变得更加严重。 2017 年仍将达到 2 GB 对我来说不是固定的。版本 15.6.6 仍然占用大量内存【参考方案8】:在我的情况下,我确实 bot 想要杀死 node.js 进程,并且我做了以下事情来降低在 Visual Studio 2019 下运行的 Node.Js 进程的 CPU 消耗:
我删除了文件夹“Program Files (x86)/MicrosoftSDK/TypeScript 我跑npm rebuild fsevents
我在Chrome浏览器中关闭了:设置-系统-继续运行后台应用...
在我看来,现在好多了。但不幸的是,不是 100%。
希望这也对那里的人有所帮助。祝大家好运! :-)
【讨论】:
【参考方案9】:要在 VS Code 中禁用语言服务,请转到扩展,然后过滤内置扩展并禁用 TypeScript/Javascript 语言服务。
在 VS Code 的节点服务使我的服务器崩溃大约一百万次后,我终于发现了这一点。令人烦恼的是,很难找到有关这方面的文档。
【讨论】:
Visual Studio != Visual Studio 代码以上是关于Visual Studio 2017 - Node.JS 服务器进程 - 关闭?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 2017 或 2019 编译 node-gyp C++ 插件
NodeJS输出未在Visual Studio 2017中显示