【问题标题】:npm.cmd opens in notepad instead of being executed (ASP.NET Web API + Angular)npm.cmd 在记事本中打开而不是被执行(ASP.NET Web API + Angular)
【发布时间】:2022-11-04 00:28:10
【问题描述】:

我有一个与this one 非常相似的问题,但不是命令行应用程序,而是我有一个 ASP.NET Web API 项目,其中包含一个 Angular 项目,使用 dotnet 模板“angular”(dotnet new angular --name something.. NET 6.0.401)。

当我使用dotnet run 运行应用程序并打开 localhost:5097 时,我会看到一个空白页面,其中显示一条消息“正在启动 SPA 代理... 当 SPA 代理准备好时,此页面将自动重定向到 https://localhost:44415。” 控制台不断打印

信息:Microsoft.AspNetCore.SpaProxy.SpaProxyMiddleware[0]
SPA 代理未准备好。返回临时着陆页。
一遍又一遍地。

当我输入 localhost:44415 时,我在控制台中收到一条错误消息

失败:Microsoft.AspNetCore.SpaProxy.SpaProxyLaunchManager[0]
无法使用命令“npm start”启动 SPA 开发服务器。
并打开一个记事本窗口,其中包含内容
:: Created by npm, please don't edit manually.
@ECHO OFF

SETLOCAL

SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"
)

SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
  SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

可以理解,这与我的 node.js 目录中的 npm.cmd 的内容相同。窗口名称也是“npm.cmd”。

正如我之前附加的线程中提到的,我在 Windows 设置中删除了 .js 的文件关联,但它没有改变任何东西。那里的最后一条评论谈到了更改“lb-discover.cmd”文件的内容。我认为 ASP.NET + Angular 项目没有与之类似的文件。

我怀疑它可能与 Windows 中的文件关联有关,但我无法为 .cmd 文件更改它。

提前致谢。

【问题讨论】:

  • 找到this 链接here,值得一试吗?

标签: node.js asp.net .net npm


【解决方案1】:

正如@Yitz 所建议的那样 - this thing 工作

【讨论】:

    【解决方案2】:

    打开您的 .csproj 文件进行编辑,找到以下属性:

    <SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand>
    

    并将其更改如下:

    <SpaProxyLaunchCommand>cmd.exe /c npm start</SpaProxyLaunchCommand>
    

    这应该可以解决 .cmd 文件关联的可能问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-11
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      相关资源
      最近更新 更多