我有一个应用程序,我已成功将其转换为 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/