AngularJS 应用程序在本地和 Heroku 上有不同的行为
Posted
技术标签:
【中文标题】AngularJS 应用程序在本地和 Heroku 上有不同的行为【英文标题】:AngularJS app have different behavior locally and on Heroku 【发布时间】:2014-09-15 19:18:28 【问题描述】:我使用 MEAN-stack(MongoDB、Express、AngularJS Node.js)编写了一个应用程序。在本地,一切都按预期工作,但由于某种原因,当我在 Heroku 上运行它时,它的行为有所不同。
问题是我的一些角度控制器是使用内容类型标题 text/html 而不是 application/javascript 传输的。如前所述,这在本地不是问题。
我已经更新了我的 npm 和 bower 包,所以一切都应该是最新的。除了我使用 v. 3.4.4 的 express(因为版本 4.x.x 需要重写配置)。我在本地和 heroku 上使用相同版本的框架。
如果我能提供更多信息以更容易解决问题,请告诉我。
问候
【问题讨论】:
Heroku 上应用的 URL 可能会有所帮助... 环境的另一个不同是 Heroku 中的负载均衡。 devcenter.heroku.com/articles/http-routing 虽然 express 应该与内容类型一致。当您将字符串设置为响应时,它默认为 text/html。 当你说不同的行为时,究竟是什么?根本不工作?或者只是代码的某些部分不起作用? @Aperçu : "我的几个控制器被传输为 text/html 类型而不是 application/javascript,因为大多数控制器被传输为(相同的文件在我运行时被传输为 app/js它在本地)。”我怀疑这会破坏我的代码。 确保您正在构建控制器以允许缩小。 docs.angularjs.org/tutorial/step_05 【参考方案1】:在大多数情况下,当您的脚本以text/html
传输时,是因为找不到并返回HTML 404
页面,您可以使用Network tab
中的Chrome Developer Tools
进行检查。
当您遇到此问题时,您的应用很可能完全损坏,这就是我问您这个问题的原因。
不知道您是在部署过程中使用诸如 Grunt
之类的任务运行器,还是只是按原样推送项目,但在这两种情况下,您都需要通过检查文件的路径是否正确设置请求 url
的脚本以错误的 MIME TYPE
传输。
Yeoman
生成器也有同样的问题,它在一段时间前与 minification
和文件重命名混淆了。
【讨论】:
我检查了我的 Heroku 日志并找到了所有文件。 您能看看这些文件的内容吗?错误的MIME TYPE
是正确的内容吗?
内容有误。它是 HTML 而不是 JavaScript。
请求的资源路径是否对应你部署应用中的有效文件位置?
我引用这些文件的方式与处理其他正在工作的文件相同,并且它们都位于同一位置。以上是关于AngularJS 应用程序在本地和 Heroku 上有不同的行为的主要内容,如果未能解决你的问题,请参考以下文章
在 Heroku 上部署 AngularJs + webpack + gulp
在 AngularJS 和 NodeJS 中隐藏 API 密钥并推送到 Git 和 Heroku
Streamlit 应用程序可以在本地运行,但不能在 Heroku 上运行