Visual Studio 2019进程未关闭,NodeJS问题

d6kp6zgx  于 2023-03-22  发布在  Node.js
关注(0)|答案(5)|浏览(296)

我正在重新安装Windows 10 Pro(10.0.18362),并试图为.NET Core 3.1 Web开发设置和配置Visual Studio 2019,但遇到了几个问题。
我创建了一个默认的React.js ASP.NET Core Web应用程序并运行了该项目。一切似乎正常,除了更新JavaScript代码后,浏览器在相当长的暂停后更新;事情似乎有些滞后。
从默认Web App(无更新)关闭Visual Studio 2019后,有几个进程似乎挂起,必须手动关闭:

我尝试过使用Visual Studio安装程序提供的Node.js安装Visual Studio 2019,除了手动安装Node.js V12.4和V13.6之外,结果也是一样的。
另一个问题:如果我使用npx create-react-app client-app --typescript将项目从JavaScript更新为TypeScript,热更新完全停止工作。但是在更新JavaScript代码并刷新浏览器之后,似乎更新了,所以它似乎正在重新编译。我已经尝试在Firefox和Chrome中调试,结果都是一样的。
我非常犹豫是否继续使用此安装,因为这些进程出现了几个问题。如果这些进程意外挂起并且没有关闭,它们将继续使用旧版本的代码,并且在进程关闭之前,所做的任何事情都不会更新,导致完全疯狂。
我是否需要执行特定的安装过程作为解决方案?或者我可能缺少NuGet包或加载项?由于这是操作系统的全新安装,是否需要安装Windows功能?或者其他可能导致此问题的配置/权限更改?
在此安装之前,只有在Visual Studio 2017中创建的项目似乎可以按预期工作。但我需要在.NET Core 3.0中开发此网站,并且看起来只有Visual Studio 2019支持。

更新

经过一番折腾,看起来是Node导致了问题。如果我手动关闭Node进程,那么Visual Studio最终将关闭-但它会让其他进程(如VSCompiler和Console)运行。即使我以管理员身份运行Visual Studio,也会发生这种情况。
我应该在Visual Studio之前安装Node,还是反之亦然?是否需要在Visual Studio或Node中执行一些设置才能使其正常工作?

更新2

在没有找到任何修复后,我尝试了完整的Windows重新安装,包括磁盘格式,然后只安装了Visual Studio和Node.js。
我在做这件事的时候发现了一件有趣的事情:我最初只安装了Visual Studio,并选择了“Web Development”和“NodeJS Development”。但是当我尝试运行一个新的.NET Core Web应用程序时,我收到一个错误,说Node.js没有安装-即使我能够在Visual Studio下的MsBuilds文件夹中找到node.exe
我完全卸载了Visual Studio和所有其他组件,安装了Node.js,然后安装了Visual Studio,但问题仍然存在。每当我尝试使用SPA模板运行任何类型的JavaScript时,Node.js进程都不会关闭。如果我杀死Node.js进程,则Visual Studio最终会关闭,但它使必须手动关闭的Console Window HostVBCSCompiler仍在运行。
我还尝试创建一个新的.NET Core Web应用程序,除了这次选择Angular模板,它工作得更好:热重新加载工作,它似乎运行得更快。但进程 * 仍然 * 不会关闭。唯一的区别是杀死Node.js进程不会让Visual Studio关闭。

更新3

也不知道这是否有帮助,但我尝试将node.exe属性设置为“以管理员身份运行此程序”,以查看是否碰巧是权限问题。这产生了相同的结果。我注意到将弹出两个窗口,然而:首先是一个空白窗口,然后是实际的Angular服务器窗口。
我不确定这是否相关,但是当我再次尝试运行Angular应用程序时,它看起来像是Angular指向了另一个(随机)端口,而不是在项目的调试设置中设置的端口。
我注意到的一件事是,通常的服务器消息不会显示在输出窗口中。它曾经显示node.js消息,如“服务器正在运行”和其他编译器消息,但现在它只显示.NET输出。

更新4

我卸载了Visual Studio和Node.js,然后确保从AppDataUser/Local目录中清除了所有剩余的Visual Studio和node_modules文件夹,然后进行了磁盘清理。最后,我重新安装了Visual Studio-确保以Admin身份运行安装程序-并重新安装了Node.js。

我以管理员身份运行Visual Studio并创建了一个新的Angular应用程序。现在,Angular应用程序按预期工作,HMR工作,似乎运行得很顺利 * 除了 * 进程仍然挂起。主要区别是杀死Microsoft Visual Studio 2019进程会杀死所有内容,而在此之前,它会让VBSCCompilerNode.js和控制台运行。
当创建React应用程序时,加载正常。但是,同样,HMR不工作,并且还使进程运行。关闭主Visual Studio进程似乎也可以清理这些进程。

bgtovc5b

bgtovc5b1#

在Visual Studio 2019中,转到“工具”,“选项”,“调试”,“常规”,底部有一个复选框,用于在调试停止时自动关闭控制台。在新版本的VS上,默认情况下未选中该复选框,如果您查看ASP.NET Core项目属性,您会看到它是一个控制台项目。因此,如果没有选中该复选框,控制台不会自动关闭。
问题是它是一个隐藏的控制台,所以你看不到它来手动关闭它。如果你选中自动关闭控制台的复选框,那么每当你停止调试器时,控制台和node.js都会停止运行。同样在选项中,你可能也想看看Node.js工具区域。它有一个复选框,当进程异常退出时等待输入。如果控制台是隐藏的,你没有办法做输入,这样也可以保持进程打开。
另一个选择是,如果您不想更改任何调试选项,是转到项目属性〉调试并将IIS Express配置文件的启动设置更改为项目而不是IIS Express。这实际上会使控制台/命令提示符可见,并且当您完成调试时,您可以Ctrl-C停止调试器,或者当你点击停止时,控制台会给予你一条消息:按任意键关闭这个窗口…

ghhkc1vu

ghhkc1vu2#

我在React SPA遇到了同样的问题,这对我很有效:

  • 工具-〉选项-〉调试-〉常规-〉为ASP.NET(Chrome,Edge和IE)启用JavaScript调试(Visual Studio 2017和2019)〈- unchecked*

播放按钮旁边的下拉列表:

脚本调试-〉禁用

ijxebb2r

ijxebb2r3#

有可能在Visual Studio中运行prepost构建任务。我会在项目设置中查找它们。我使用VSCode。所以,如果你遵循下面的解释,你将能够解决这个问题。
1.在项目根文件夹中创建一个.bat文件(例如kill-node.bat),内容如下:

tasklist | find /i "node.exe" && taskkill /im node.exe /F || echo process "node.exe" not running.

1.添加执行.bat文件的pre-build-task
1.添加执行.bat文件的post-build-task
1.完成了!现在每次你开始调试/重新调试你的应用程序时,.bat文件都会杀死所有的节点僵尸示例。你停止dubug的时刻也是如此。

VSCode指南:

1.执行上述算法的步骤1。
1.打开.vscode文件夹中的文件tasks.json,并在其任务的顶部添加新任务:

{
  "label": "kill-node",
  "command": "kill-node.bat"
},

1.现在修改build任务代码(在预构建时激活我们的kill-node任务):

{
  "label": "build",
  "dependsOn": "kill-node",  // <<< extra string to run kill-node task prior to build task
  "command": "dotnet",
  //... the rest of build task code
}

1.打开launch.json文件并插入新字符串:

{
  "version": "0.2.0",
  "configurations": [
  {
    "name": ".NET Core Launch (web)",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "build",
    "postDebugTask": "kill-node",  //  <<< extra string to run kill-node on debug end
    //... the rest of launch.json file
  }
}

1.就是这样,现在你再也不用担心node-zombie示例占用你的内存了。

muk1a3rh

muk1a3rh4#

这应该在ASP.NET Core 5.0中得到修复,如果可能的话,请尝试升级。

ldioqlga

ldioqlga5#

恐怕我没有一个修复,但如果任何人想要一个快速的方法来杀死所有错误的节点进程,并加快速度,他们可以运行:
taskkill /IM "node.exe" /F
在VS运行时,我没有遇到任何问题。

相关问题