【问题标题】:Google Maps Uncaught TypeError: b.has is not a functionGoogle Maps Uncaught TypeError: b.has is not a function
【发布时间】:2019-04-29 20:58:48
【问题描述】:

我们在内部系统中包含 Google Maps API V3,代码如下:

script src="https://maps.googleapis.com/maps/api/js?key=&libraries=places,geometry"

这在几个小时前(美国东部标准时间上午 9 点)之前一直在工作,现在在控制台中返回的只是:

Uncaught TypeError: b.has is not a function来自https://maps.googleapis.com/maps-api-v3/api/js/35/3/map.js

还有其他人面临同样的问题吗?

当代码包含在 Google 的服务器中时,我该如何解决?

【问题讨论】:

标签: javascript google-maps-api-3


【解决方案1】:

遇到了同样的问题,现在使用旧版本修复它:

https://maps.googleapis.com/maps/api/js?v=quarterly&key=API_KEY

长期修复 - 您可能覆盖了原生 window.Map,请参阅 https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Map

【讨论】:

  • 谢谢。我很高兴其他人也遇到了同样的问题
  • @JRT2018 我也是! ?? 你可能也像我一样拥有自己的 window.map 属性,这是一个保留字。重命名它应该可以解决它。
  • 非常感谢,您让我免于大量故障排除。我有一个名为 Map 的 Google Maps API 包装器,重命名它为我解决了这个问题。对于后代和 SEO,我的错误信息是“j.keys 不是函数”。
【解决方案2】:

我们这里也有同样的问题。我们有一个指向上一个版本的链接: https://maps.googleapis.com/maps/api/js?key=...

如果我们将版本强制为 3.34,它就可以解决问题: https://maps.googleapis.com/maps/api/js?v=3.34&key=

版本 3.35 不工作。谷歌已经替换了用于搜索键的地图(哈希图,而不是图形地图)的功能。 hasOwnProperty(b, c) --> b.has(c)

问题是“b”不具备“has”功能。

目前我没有更多信息。我们正在继续调查。

祝大家好运。

问候 文森特

编辑: 好的,现在我明白发生了什么。在我们地图的某个地方,我们正在重新定义原型“地图”。这个原型不包含方法“has”,也可能不包含“set”(我们就是这种情况)。 您必须搜索“Map.prototype”之类的内容。在 jour JS 文件中。这会给你提示你必须在哪里更正你的 JS。 如果你不能抑制这个原型,你将不得不重新定义缺失的方法。 例如,我们有以下原型:

function Map(){
    this.obj = {};
    this.count = 0;
}

我们必须用以下方法完成这个原型:

Map.prototype.has=function(key){
    return this.obj[key] !== undefined;
}

Map.prototype.set = function(key, value){
    var oldValue = this.obj[key];
    if(oldValue == undefined){
        this.count++;
    }
    this.obj[key] = value;
    return oldValue;
}

通过此更正,GoogleMaps JS 3.35 版正在运行。

希望对你有帮助。

问候, 文森特

【讨论】:

【解决方案3】:

同样的问题,但突然出现了不同的错误:

ma​​p.js:56 Uncaught TypeError: this.j.keys is not a function

强制版本为 3.34 时没有问题,但 3.35 不会加载地图或标记。

当然,在尝试解决问题数小时后,重命名 js 类使其不再称为 Map 修复了它。

【讨论】:

  • 这不是问题的答案,如果您遇到问题,请考虑自己提出新问题。
  • @xashru 这是同样的问题,但有一条不同的错误消息,我在尝试解决问题时没有遇到任何问题,并认为它可能会帮助其他人遇到同样的错误 - 如果它是评论反而?我自己回答的一个新问题/链接到这个问题?
  • 是的,您可以将其作为评论添加到已接受的答案中。
  • 啊,我没有足够的声望在那里添加评论
  • @ANCHALOSEY 这是一个 js 文件 map.js 仅在我一直在构建的应用程序中使用,并且该类称为 Map 导致冲突。我将:class Map extends Controller 更改为 class Mapper extends Controller 并解决了问题。
【解决方案4】:

类似的事情。大流量应用中的静态成熟代码。工作8年以上。直到今天早上。原来我们一直在使用 GMap API 为我们的一个内部对象实例(“地图”)声明的保留 ID。不知道为什么它决定今天是爆发的一天。我们在 API 的旧版本 (3.29) 中进行链接。谷歌的事情显然发生了变化。

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2021-12-16
    • 2018-04-20
    • 2017-04-13
    • 2015-01-14
    • 2014-07-06
    相关资源
    最近更新 更多