首页 > 解决方案 > 无法从 Github 存储库将 ASP.NET Core / Angular 应用程序部署到 Azure

问题描述

我使用dotnet new angular -o Homepage4.

我运行这个项目dotnet run,它会打开一个默认网页。一切正常。

我将此项目保存到 GitHub 存储库。

现在我希望从我的 GitHub 存储库构建我的 Azure 站点。

在我的 Azure 门户中...

  1. 选定的应用服务
  2. 选择了我的应用服务(我的网站)
  3. 选定的部署选项(经典)

在此处输入图像描述

  1. 选择 GitHub 作为部署选项

在此处输入图像描述

  1. 选择Homepage4仓库,master分支自动选择

在此处输入图像描述

  1. 单击确定

我得到了错误

在此处输入图像描述

单击该错误,打开部署详细信息

在此处输入图像描述

我看到最后一个命令失败,点击查看日志

它打开了一个包含以下内容的日志控制台:

Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling ASP.NET Core Web Application deployment.
  Restoring packages for D:\home\site\repository\Homepage4.csproj...
  Generating MSBuild file D:\home\site\repository\obj\Homepage4.csproj.nuget.g.props.
  Generating MSBuild file D:\home\site\repository\obj\Homepage4.csproj.nuget.g.targets.
  Restore completed in 3.2 sec for D:\home\site\repository\Homepage4.csproj.
Microsoft (R) Build Engine version 15.8.169+g1ccb72aefa for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 499.04 ms for D:\home\site\repository\Homepage4.csproj.
  Homepage4 -> D:\home\site\repository\bin\Release\netcoreapp2.1\Homepage4.dll
  Homepage4 -> D:\home\site\repository\bin\Release\netcoreapp2.1\Homepage4.Views.dll
EXEC : npm ERR! error : Method Not Allowed [D:\home\site\repository\Homepage4.csproj]
  npm ERR!     at errorResponse (D:\Program Files (x86)\npm\1.4.28\node_modules\npm\lib\cache\add-named.js:260:10)
  npm ERR!     at D:\Program Files (x86)\npm\1.4.28\node_modules\npm\lib\cache\add-named.js:203:12
  npm ERR!     at saved (D:\Program Files (x86)\npm\1.4.28\node_modules\npm\node_modules\npm-registry-client\lib\get.js:167:7)
  npm ERR!     at Object.oncomplete (fs.js:108:15)
  npm ERR! If you need help, you may report this *entire* log,
  npm ERR! including the npm and node versions, at:
  npm ERR!     <http://github.com/npm/npm/issues>

  npm ERR! System Windows_NT 6.2.9200
  npm ERR! command "node" "D:\\Program Files (x86)\\npm\\1.4.28\\node_modules\\npm\\bin\\npm-cli.js" "install"
  npm ERR! cwd D:\home\site\repository\ClientApp
  npm ERR! node -v v0.10.40
  npm ERR! npm -v 1.4.28
  npm ERR! code E405
D:\home\site\repository\Homepage4.csproj(38,5): error MSB3073: The command "npm install" exited with code 1.
Failed exitCode=1, command=dotnet publish "D:\home\site\repository\Homepage4.csproj" --output "D:\local\Temp\8d645b0c2726c81" --configuration Release
An error has occurred during web site deployment.
\r\nD:\Program Files (x86)\SiteExtensions\Kudu\78.11022.3613\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"

我不确定我是否理解问题所在,有人可以建议吗?

我会提醒一下,它是运行dotnet new angular命令时生成的默认代码。当在开发机器上运行时,代码显然可以工作dotnet run

谢谢

更新

我已将 Azure 上的 npm 版本更改为 6.1.0

尝试再次运行部署,但再次失败:

Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling ASP.NET Core Web Application deployment.
  Restoring packages for D:\home\site\repository\Homepage.csproj...
  Generating MSBuild file D:\home\site\repository\obj\Homepage.csproj.nuget.g.props.
  Generating MSBuild file D:\home\site\repository\obj\Homepage.csproj.nuget.g.targets.
  Restore completed in 3.43 sec for D:\home\site\repository\Homepage.csproj.
Microsoft (R) Build Engine version 15.8.169+g1ccb72aefa for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 354.75 ms for D:\home\site\repository\Homepage.csproj.
  Homepage -> D:\home\site\repository\bin\Release\netcoreapp2.1\Homepage.dll
  Homepage -> D:\home\site\repository\bin\Release\netcoreapp2.1\Homepage.Views.dll

  D:\Program Files (x86)\npm\6.1.0\node_modules\npm\bin\npm-cli.js:79
        let notifier = require('update-notifier')({pkg})
            ^^^^^^^^
  SyntaxError: Unexpected identifier
      at Module._compile (module.js:439:25)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Function.Module.runMain (module.js:497:10)
      at startup (node.js:119:16)
      at node.js:935:3

  D:\Program Files (x86)\npm\6.1.0\node_modules\npm\bin\npm-cli.js:79
        let notifier = require('update-notifier')({pkg})
            ^^^^^^^^
  SyntaxError: Unexpected identifier
      at Module._compile (module.js:439:25)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Function.Module.runMain (module.js:497:10)
      at startup (node.js:119:16)
      at node.js:935:3
D:\home\site\repository\Homepage.csproj(39,5): error MSB3073: The command "npm install" exited with code 8.
Failed exitCode=1, command=dotnet publish "D:\home\site\repository\Homepage.csproj" --output "D:\local\Temp\8d64a5971495781" --configuration Release
An error has occurred during web site deployment.
\r\nD:\Program Files (x86)\SiteExtensions\Kudu\78.11022.3613\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"

这次是什么?

标签: node.jsazureasp.net-corenpmazure-web-app-service

解决方案


您的代码在开发机器上运行良好,因为您使用的是 npm 6.4,而在 Azure 上它失败了,因为您使用的是旧版本的 npm 1.4.28。该错误是由于 npm 库引起的,需要您更新 npm 库。

您需要强制执行应为您的应用使用的 npm 和 Node.js 版本,您可以将它们添加到 package.json 文件中,然后重试上传。为您创建的默认应用在 package.json 文件dotnet new angular中不包含任何engines属性,这意味着平台使用默认内容。由于您机器上可用的平台是 Node.js 和 6.4 的 npm,它可以工作。在 Azure 上,它转到 (~)1.4,这会导致问题。只需通过将引擎添加到您的 package.json 来解决问题,它就在这个区域

"license": "MIT",
"engines": {
    "node": "8.1.4",
    "npm": "5.0.3"
},
"scripts": {

然后通过 GitHub 重新部署应用程序,它会工作,因为这次您将强制平台使用这些版本。

请在这篇文章中详细了解如何在 Azure 平台上管理 Node.js 运行时:https ://blogs.msdn.microsoft.com/azureossds/2016/04/20/nodejs-and-npm-versions-on -azure 应用服务/

对于类似的线程,要注意 Azure 上支持的 Node.js 运行时版本,请查看Azure 网站上提供哪些版本的 node.js?


推荐阅读