Heroku 生产:未定义 Gmaps - 在本地工作

Heroku production : Gmaps is not defined - works in local

在一个简单的页面上,我显示了一张带有一个标记的 google 地图。

在本地,一切正常,但在 Heroku 上,我在控制台中遇到错误:

 Uncaught ReferenceError: Gmaps is not defined

这与

有关
handler = Gmaps.build('Google'); //and some other stuff

本地,这是有效的。但是当我在heroku上部署这个的时候,好像无法加载JS。

这是我文件的顶部

<script src="//maps.google.com/maps/api/js?v=3.13&sensor=false&libraries=geometry"type="text/javascript"></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js'type='text/javascript'></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/src/richmarker-compiled.js' type='text/javascript'></script>

application.js

//= require underscore
//= require gmaps/google

这可能是一个简单的错误,可能与预编译的资产有关,但我并不是这方面的专家

当你 运行 本地系统中的 rails 服务器总是使用命令 "rails s -e production" 来检查站点在 heroku 中的工作情况。您可能应该添加

//= require_tree .

您的 application.js.. 请检查以下内容 link :

gmaps4rails: Uncaught ReferenceError: Gmaps is not defined

如果您在 .html.erb 文件上使用标准 <script> 时出现错误,那么这就是您在 .html.erb 文件上包含 javascript 的方式,否则它可能会显示错误

<%= javascript_include_tag "http://YourJavascriptFileLink.js" %>

其实我的问题已经解决了:

我的控制台显示 JQuery 未定义。我并没有真正注意它。但这就是问题所在。所以我 更改了 application.js 中 requires 的顺序,然后我将 gmaps 放在顶部

//= require gmaps/google
//= require jQuery.headroom.min.js
//= require headroom.min.js    
//= require underscore
//= require template.js

so gmaps 在文件的顶部,当 JQuery 被声明为 undefined 它没有阻止 gmaps 加载。 所以现在我必须修复 jquery 问题,但是这个 gmaps 问题已经解决了