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

And*_*ham 25 node.js typescript reactjs visual-studio-2019 asp.net-core-3.0

我正在全新安装 Windows 10 专业版 (10.0.18362) 并尝试安装 Visual Studio 2019 并针对 .NET Core 3.1 Web 开发进行配置,但遇到了几个问题。

我创建了一个默认的 React.js ASP.NET Core Web 应用程序并运行了该项目。一切似乎都正常,只是在更新 JavaScript 代码后,浏览器会在一段相当长的停顿后更新;事情似乎滞后了。

从默认 Web 应用程序(无更新)关闭 Visual Studio 2019 后,有几个进程似乎挂起,必须手动关闭:

Visual Studio 2019 进程

除了手动安装 Node.js V12.4 和 V13.6 之外,我还尝试使用 Visual Studio 安装程序提供的 Node.js 安装 Visual Studio 2019,结果相同。

另一个问题:如果我使用 将项目从 JavaScript 更新为 TypeScript npx create-react-app client-app --typescript,热更新将完全停止工作。但是在更新 JavaScript 代码并刷新浏览器之后,事情似乎有所更新,因此它似乎确实在重新编译。我试过在 Firefox 和 Chrome 中调试,结果都一样。

我很犹豫要不要继续使用这个安装,因为我在这些过程中遇到了几个问题。如果这些意外挂起并且没有关闭,它们将继续使用旧版本的代码,并且在关闭进程之前所做的任何事情都不会更新,从而导致完全的疯狂。

是否有我需要执行的特定安装过程作为解决方法?或者我可能缺少 NuGet 包或附加组件?由于这是操作系统的全新安装,是否需要安装 Windows 功能?或其他可能导致此问题的配置/权限更改?

在此安装之前,只有在 Visual Studio 2017 中创建的项目似乎按预期工作。但是我需要在 .NET Core 3.0 中开发这个站点,而且看起来只支持 Visual Studio 2019。

更新

经过一番折腾,看起来问题是由 Node 引起的。如果我手动关闭 Node 进程,那么 Visual Studio 最终会关闭——但它会留下其他进程,如 VSCompiler 和 Consoles 运行。即使我以管理员身份运行 Visual Studio,也会发生这种情况。

我应该在 Visual Studio 之前安装节点,还是反之?是否可能需要使用 Visual Studio 或 Node 执行一些设置才能使事情正常工作?

更新 2

在没有找到任何修复程序后,我尝试了完整的 Windows 重新安装,包括磁盘格式,然后只安装了 Visual Studio 和 Node.js。

这样做时我发现了一件有趣的事情:我最初只安装了 Visual Studio 并选择了“Web 开发”和“NodeJS 开发”。但是,当我尝试在没有任何更改的情况下运行新的 .NET Core Web 应用程序时,我收到一条错误消息,指出未安装 Node.js — 尽管我能够在 Visual Studio 下node.exeMsBuilds文件夹中找到。

我完全卸载了 Visual Studio 和所有其他组件,安装了 Node.js,然后安装了 Visual Studio,但问题仍然存在。每当我尝试使用 SPA 模板运行任何类型的 JavaScript 时,Node.js 进程都不会关闭。如果我杀了Node.js的处理,然后Visual Studio将最终关闭,但它留下的Console Window Host,并VBCSCompiler具有手动关闭正在运行。

我还尝试创建一个新的 .NET Core Web 应用程序,但这次选择了 Angular 模板,效果更好:Hot Reload 有效,而且运行速度似乎要快得多。但是进程仍然没有关闭。唯一的区别是终止 Node.js 进程不会让 Visual Studio 关闭。

更新 3

也不确定这是否有帮助,但我尝试将node.exe属性设置为“以管理员身份运行此程序”以查看它是否碰巧是权限问题。这产生了相同的结果。但是,我注意到会弹出两个窗口:首先是一个空白窗口,然后是实际的 Angular 服务器窗口。

我不确定它是否相关,但是当我尝试再次运行 Angular 应用程序时,看起来 Angular 指向的是另一个(随机)端口,而不是在项目的调试设置中设置的端口。

我注意到的一件事是通常的服务器消息没有显示在输出窗口中。它曾经显示诸如“服务器正在运行”等 node.js 消息和其他编译器消息,但现在它只显示 .NET 输出。

更新 4

越来越近了,我卸载了 Visual Studio 和 Node.js,然后确保node_modules从我的AppDataUser/Local目录中清除任何剩余的 Visual Studio 和文件夹,然后进行磁盘清理。最后,我重新安装了 Visual Studio(确保以管理员身份运行安装程序)并重新安装了 Node.js。

我以管理员身份运行 Visual Studio 并创建了一个新的 Angular 应用程序。现在,Angular 应用程序按预期工作,HMR 工作正常,除了进程仍然挂起,其他事情似乎运行顺利。主要区别在于杀死Microsoft Visual Studio 2019进程会杀死所有内容,而在它离开VBSCCompiler,Node.js和 控制台运行之前。

创建 React App 时,一切正常。但是,同样,HMR 不起作用并且还会使进程继续运行。现在关闭主要的 Visual Studio 进程似乎也可以清理这些。

Tar*_*ran 13

恐怕我没有修复,但如果有人想要一种快速的方法来杀死所有错误的节点进程并加快速度,他们可以运行:

taskkill /IM "node.exe" /F

在 VS 运行时执行此操作没有任何问题。

在此处输入图片说明


Ani*_*lof 7

在 Visual Studio 2019 中,转到“工具”、“选项”、“调试”、“常规”,底部有一个“调试停止时自动关闭控制台”复选框。默认情况下,在新版本的 VS 上它是未选中的,如果您查看 ASP.NET Core 项目属性,您将看到它是一个控制台项目。因此,如果不选中该复选框,控制台不会自动关闭。

问题是它是一个隐藏的控制台,所以你看不到它来手动关闭它。如果您选中自动关闭控制台的复选框,那么每当您停止调试器时,控制台和 Node.js 将停止运行。另外,在“选项”中,您可能还想查看“Node.Js 工具”区域。它有一个当进程异常退出时等待输入的复选框。如果控制台被隐藏,您就无法进行输入,从而也无法保持进程打开。

如果您不想更改任何调试选项,另一个选择是转到项目属性 > 调试,并将 IIS Express 配置文件的启动设置更改为项目而不是 IIS Express。这实际上将使控制台/命令提示符可见,当您完成调试时,您可以按 Ctrl-C 停止调试器,或者当您点击停止时,控制台会给您消息 Press any key to close this window 。。。