You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Web API+Angular项目中npm.cmd被记事本打开而非执行的问题

解决ASP.NET + Angular项目中npm start触发记事本打开的问题

问题现象

  • 使用dotnet new angular --name something(.NET 6.0.401)创建内嵌Angular的ASP.NET Web API项目
  • 执行dotnet run后,localhost:5097显示临时跳转页面,控制台持续输出:
    info: Microsoft.AspNetCore.SpaProxy.SpaProxyMiddleware[0]
    SPA proxy is not ready. Returning temporary landing page.
    
  • 访问localhost:44415时,控制台报错:
    fail: Microsoft.AspNetCore.SpaProxy.SpaProxyLaunchManager[0]
    Couldn't start the SPA development server with command 'npm start'.
    
  • 同时弹出记事本窗口,显示npm.cmd的内容

解决方法

1. 修复.cmd文件的默认关联

Windows中.cmd文件被错误关联到记事本,导致系统打开.cmd时直接用记事本而不是执行它。可以通过以下命令修复:

  • 以管理员身份打开命令提示符(CMD)
  • 执行命令:
    assoc .cmd=cmdfile
    ftype cmdfile="%SystemRoot%\System32\cmd.exe" /c "%1" %*
    
  • 执行后重启命令提示符和IDE,再尝试dotnet run

2. 直接指定npm的完整路径

如果修复关联无效,可以修改项目中SPA代理的配置,直接指定npm的完整路径:

  • 打开项目根目录下的Properties/launchSettings.json
  • 找到profiles下对应的配置项,修改spaProxyLaunchCommand为npm的完整路径,比如:
    "spaProxyLaunchCommand": "\"C:\\Program Files\\nodejs\\npm.cmd\" start"
    
  • 保存后重新执行dotnet run

3. 手动启动Angular开发服务器

如果上述方法都无效,可以手动启动Angular服务,再启动ASP.NET项目:

  • 打开命令提示符,进入项目的ClientApp目录
  • 执行npm install确保依赖安装完成(首次运行需要)
  • 执行npm start启动Angular开发服务器
  • 另开一个命令提示符,在项目根目录执行dotnet run,此时ASP.NET会直接代理到已启动的Angular服务

内容的提问来源于stack exchange,提问作者slowikowskiarkadiusz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:51:20