几年前,我在AngularJs中进行了一些开发,并且非常喜欢它,因此我决定开始尝试迁移到新版本。鉴于Angular 7已经发布,所以我迁移到Angular 6没有意义,但是Visual Studio模板当前仍在使用V6。
我一直在关注这篇文章(https://www.talkingdotnet.com/create-an-angular-7-app-with-visual-studio-2017/)将默认VS模板升级到V7,但是在将应用程序部署到Web托管提供商时遇到了问题。如果我使用模板创建一个新的Angular V6应用程序,它将部署并正常运行。我可以使用上面提到的文章将V6模板应用程序升级到V7,它将在VS本地正常运行,但是在部署时会引发以下错误:
错误:
不应为已部署的应用程序启用开发环境。它可能导致从异常向最终用户显示敏感信息。对于本地调试,请通过将ASPNETCORE_ENVIRONMENT环境变量设置为Development并重新启动应用程序来启用Development环境。
我尝试过的事情:
1)我尝试更改项目属性对话框(从“开发”到“生产”)中“调试”选项卡上的ASPNETCORE_ENVIRONMENT变量。我收到相同的错误。
2)我尝试将environment.ts文件的production属性更改为true,以便environment.ts和environment.prod.ts都为true,以便使用错误的版本排除它。这也会导致相同的错误。
3)我尝试使用WinDiff来显示“ ClientApp”文件夹之间的所有文件差异,并比较V6和V7。因为这是我在工作正常和不工作时所做的唯一更改。对我来说值得怀疑的唯一区别是:main.ts,angular.json和app.module.ts。我提供了每个差异的图片(红色是V6,黄色是V7)。我不知道此时还可以尝试什么,但是我确实注意到从V6到V7的路径结构是不一样的,并且显示在所列出的angular.json图像中。我不确定这是否是问题所在,但是同样,该应用程序在VS中的V7本地运行正常,因此我怀疑这是原因,但并不确定。
任何帮助将不胜感激。
答案 0 :(得分:2)
我终于让它工作了,但我不完全明白为什么。
V7升级(使用“ ng new ClientApp”命令)将创建带有outputPath为“ dist / ClientApp”的angular.json文件,其中原始V6模板仅使用“ dist”创建此属性。如果在V7应用程序中将outputPath更改为“ dist”,它将按预期部署并运行。因此,它肯定与angular.json中的此设置有关。
还有一件事对我来说仍然毫无意义。如果我完全删除了发布到站点的整个Web目录,请将outputPath更改回“ dist / ClientApp”,然后重新部署,它仍然可以正常工作。我进行此测试是为了验证此更改是否确实解决了我在发布答案之前遇到的问题。我没想到它会起作用,所以它在起作用上肯定令人困惑。