angular - 将 Angular Universal 部署到 Azure

标签 angular azure azure-devops

我有一个应用程序,我已成功将其转换为 Angular Universal(应我客户的要求)。 我使用命令 npm runserve:ssr 运行我的应用程序,并将浏览器指向 http://localhost:4000这有效。

现在我要部署。我已经运行 npm run build:ssr 它创建了一个 dist 文件夹。 dist 文件夹中没有“普通” Angular 文件。它比较稀疏,它有:

  • server.js
  • 浏览器文件夹
  • 和一个服务器文件夹

如果我将这些内容 ftp 到我的 azure 站点(就像我以前对普通 Angular 应用程序所做的那样),它不起作用。我收到一个错误:

You do not have permission to view this directory or page.

所以我尝试使用 VSTS 设置 CI,并遵循了我发现的一些用于发布 Angular Universal 的步骤(尽管它们不是很清楚)。 这是我的 yaml 文件:

queue:
  name: Hosted VS2017
  demands: npm

steps:
- task: NodeTool@0
  displayName: 'Use Node 8.x'
  inputs:
    versionSpec: 8.x

- task: Npm@1
  displayName: 'npm install'
  inputs:
    verbose: false

- task: Npm@1
  displayName: 'npm run'
  inputs:
    command: custom
    verbose: false
    customCommand: 'run build:ssr'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/app/dist'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'
    TargetFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/app/dist'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: server.js
    TargetFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/app/dist'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: prerender.js
    TargetFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

- task: AzureRmWebAppDeployment@3
  displayName: 'Azure App Service Deploy'
  inputs:
    azureSubscription: '<my subscription>'
    WebAppName: firstApplication
    DeployToSlotFlag: true
    ResourceGroupName: Temp
    SlotName: develop
    Package: '$(Build.ArtifactStagingDirectory)/app'
    ConfigurationSettings: '-Handler iisnode -NodeStartFile server.js -appType node'

我认为这是不对的。有人可以帮我解决这个问题吗?

最佳答案

我遵循了r3plica的回答,我必须做一些小小的修改并将dist/server移动到根目录,一切顺利。

如果不起作用,请始终使用node指向server.js

node <path to server.js>

这告诉你最基本的错误

关于angular - 将 Angular Universal 部署到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480198/

相关文章:

Angular测试台测试路线找不到模块

azure - 如果在 azure 开发者门户中输入错误的用户名,则不会显示错误消息

tfs - vsts在线拉取请求代码如何删除虚线边框

tfs - 我如何分支?

c# - 如何在 Azure 中运行安全的 Service Fabric 有状态服务?

tfs - 如何公开共享 Visual Studio 在线存储库?

Angular - 找不到名称的管道

javascript - javascript中用逗号分隔元素

angular - 在 app.module.ts 中注册服务与 angular4 中的单个组件相比有什么好处?

azure - 如何修复部署 Microsoft Azure 的 FACE API 时出现的错误