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

部署到 Heroku 时的本地或私有 NPM 模块

Streamlit 应用程序可以在本地运行,但不能在 Heroku 上运行

在本地加载 CSS,但不在 Heroku 中加载 Rails 应用程序

JWT 功能在本地有效,但在 heroku 上无效