Uncaught TypeError: a.indexOf不是一个函数;打开新的基础项目时出错

我已经通过bash创建了一个新的Foundation 5项目,使用foundation new my-project。当我在Chrome中打开index.html文件时,控制台中显示了一个Uncaught TypeError: a.indexOf is not a function错误,起源于jquery.min.js:4

我按照基金会网站上的步骤创建了这个项目,但我似乎无法摆脱这个错误。Foundation和jQuery看起来在index.html文件中被正确地包含和链接,并且链接的app.js文件包含$(document).foundation();

有人知道是什么导致了这个错误吗?解决方案是什么呢?

控制台错误消息截图 .

410694 次浏览

此错误通常由不兼容的 jQuery版本引起。我在foundation 6存储库中遇到了同样的错误。我的存储库使用jQuery 3,但基础需要更早的版本。然后我改变了它,它工作了。

如果你看一下基础5依赖关系所要求的jQuery版本,它声明了"jquery": "~2.1.0"

你能确认你加载的jQuery版本正确吗?

我希望这能有所帮助。

此错误可能是由jQuery事件别名.load().unload().error()引起的,这些别名都是弃用 jQuery 1.8。在代码中查找这些别名,并用.on()方法替换它们。例如,替换以下已弃用的摘录:

$(window).load(function(){...});

与以下:

$(window).on('load', function(){ ...});

其中一个可能的原因是当加载jQuery两次时,比如:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

所以,检查你的源代码和删除重复的jQuery加载。

我也遇到过这个问题。我正在使用jquery.poptrox.min.js进行图像弹出和缩放,我收到了一个错误,它说:

" Uncaught TypeError: a.indexOf不是一个函数"错误。

这是因为indexOf3.3.1/jquery.min.js中不受支持,因此一个简单的修复方法是将其更改为旧版本2.1.0/jquery.min.js

这为我解决了问题。

我正在使用jQuery 3.3.1,我收到了同样的错误,在我的情况下,URL是一个Object vs字符串。

发生的事情是,我使用URL = window.location -返回一个对象。一旦我将它更改为window.location.href -它工作了,没有e.indexOf错误。

请添加下面的jQuery迁移插件

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

我通过安装正确版本的Jquery来解决这个问题,我的项目需要使用npm

这似乎很有趣,但没有人考虑到以下几点。

  1. 看看你的库是否需要旧版本的jQuery。如果您不能发现版本,您可以注释和取消注释每个脚本行,直到您找到它。
  2. 打开图书馆,找到作者。
  3. 在谷歌中搜索库的更新。90%的人都能找到。
  4. 更新需要旧版本jQuery的过时库的引用。

在任何情况下都不要降级jquery版本