无法将 reactjs 和 .net 4.8 后端部署到 iis - dist 文件夹丢失
Posted
技术标签:
【中文标题】无法将 reactjs 和 .net 4.8 后端部署到 iis - dist 文件夹丢失【英文标题】:Having trouble deploying reactjs and .net 4.8 backend to iis - dist folder missing 【发布时间】:2020-04-29 13:42:22 【问题描述】:所以我尝试使用 .net 4.8 后端和 reactjs 作为前端从 Azure Devops 部署到服务器上的 IIS。工件最终在那里,但它缺少一些关键组件。
我遇到的问题是试图让“dist”文件夹结束反应文件夹:“/ClientApp”。路径是“[projectroot]/ClientApp/dist”,但它最终无处可去。我尝试了多种不同的路径组合。我还尝试使用两个构建步骤和两个工件,但这也不起作用。我将发布一系列我的设置图片,希望这能帮助你为我指明正确的方向..
这是在“ClientApp”中带有 react 应用程序的项目
dist 文件夹
网络包
npm 构建步骤
解决方案构建步骤
复制文件步骤(从这个帖子enter link description here得到这个)
神器步骤
发布步骤(之前的任务包含身份验证等)
这是从构建中删除的工件(请注意,工件与压缩在 drop 中的解决方案“拆分”(正确)但 npm 构建(或复制文件)在其自己的文件结构中。这很可能是出了什么问题。
这是服务器上的根文件夹,看起来不错
ClientApp 文件夹中没有“dist”文件夹...
【问题讨论】:
【参考方案1】:问题是 IIS Web 应用程序部署任务从包 AFA.WEB.zip
部署,并且反应工件应复制到位于包 AFA.WEB.zip
中的反应文件夹 /ClientApp
。但是,react 工件被复制到位于包 AFA.WEB.zip
之外的错误位置,请参见下面的屏幕截图。
其中一种解决方法是将 Visual Studio Build 任务的 MSbuild Arguments 更改为
/t:publish /p:outputpath=$(Build.ArtifactStagingDirectory)
而不是 /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true ...
。
这样后端构建工件将被发布到文件夹 $(Build.ArtifactStagingDirectory)\publish
而不是压缩。然后在 Copy files 任务中,您可以将 react 工件复制到 Target 文件夹 $(Build.ArtifactStagingDirectory)\publish\ClientApp\dist
。
然后在 IIS Web 应用部署任务 中,将 Package or Folder 设置为文件夹 $(System.DefaultWorkinDirectory)/..-Master-CI/drop/publish
你也可以参考我对this thread的回复。
更新:如果上面的 Msbuild 参数没有按预期生成工件。请尝试使用 /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish
作为 Msbuild 参数。此 msbuild 参数会将构建工件输出到文件夹 $(build.artifactstagingdirectory)\\
解压缩。
主要目标是让 Visual Studio 构建任务生成解压缩的构建工件文件。
在 Copy files 任务中,您可以将 react 工件复制到 Target 文件夹 $(Build.ArtifactStagingDirectory)\ClientApp\dist
。
在IIS Web 应用部署任务中,将Package or Folder设置为文件夹$(System.DefaultWorkinDirectory)/..-Master-CI/drop/
【讨论】:
好的,我尝试改变所有这些,但现在工件是相同的,只有一个 'publish' 文件夹,其中包含 'ClientApp/dist' 和二进制文件,而不仅仅是 'ClientApp /dist' 包含所有二进制文件。当我检查服务器时,那里只有'ClientApp'文件夹,里面有dist文件夹。没有别的,没有二进制文件,没有 webconfigs,什么都没有。 也许我必须有两个版本?一个用于“$(System.DefaultWorkingDirectory)/Phobos-Master-CI/drop/”,一个用于“$(System.DefaultWorkingDirectory)/Phobos-Master-CI/drop/publish”? 在将 msbuild 参数更改为/t:publish /p:outputpath=$(Build.ArtifactStagingDirectory)
后,您能否检查 vsbuild 任务日志以查看构建工件是否生成到 $(Build.ArtifactStagingDirectory)\publish
我不确定在哪里可以看到这个。我检查了最新版本的日志(您可以在这些步骤中看到所有日志),但我找不到任何关于输出路径的提及。你能指出我正确的方向吗?
嗨 @swedish_junior_dev 如果上面的 msbuild 不起作用。请尝试使用这个 msbuild 参数/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish
以上是关于无法将 reactjs 和 .net 4.8 后端部署到 iis - dist 文件夹丢失的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS 和 .NET Core API 中的 windows 授权
Nodejs:无法同时运行expressjs和reactjs
无法在 ReactJS 后端项目上将项目添加到 SQL 数据库
@firebase/firestore:Firestore (8.6.2):无法访问 Cloud Firestore 后端(React Js)