node.js - 无法从 Github 存储库将 ASP.NET Core / Angular 应用程序部署到 Azure
问题描述
我使用dotnet new angular -o Homepage4
.
我运行这个项目dotnet run
,它会打开一个默认网页。一切正常。
我将此项目保存到 GitHub 存储库。
现在我希望从我的 GitHub 存储库构建我的 Azure 站点。
在我的 Azure 门户中...
- 选定的应用服务
- 选择了我的应用服务(我的网站)
- 选定的部署选项(经典)
- 选择 GitHub 作为部署选项
- 选择Homepage4仓库,master分支自动选择
- 单击确定
我得到了错误
单击该错误,打开部署详细信息
我看到最后一个命令失败,点击查看日志
它打开了一个包含以下内容的日志控制台:
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"
这次是什么?
解决方案
您的代码在开发机器上运行良好,因为您使用的是 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?
推荐阅读
- r - 更改列的数字元素的值
- rust - 此错误消息是否意味着我可以在 for 循环中使用模式匹配?
- matlab - Matlab 3dplot函数绘制正弦变化频率和时间的幅度
- python - Matplotlib subplot2grid 无法正常工作
- ldap - 引起:org.springframework.ldap.AuthenticationException:[LDAP:错误代码 49 - 80090308:
- php - Laravel 验证或
- java - 通过套接字将 JTable 数据从服务器发送到客户端 JTable
- drupal-modules - hook_mail() 的“from”参数在 Drupal 8 中不起作用?
- docker - dockerd 为所有容器设置默认环境变量
- laravel-5 - 无法从 Vue.js 中的单个文件组件导入 Mixin