Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新到Chrome v65并开始出现以下错误:预期onClick listener是一个函数,而不是获取类型字符串_Javascript_Reactjs_Google Chrome_Onclick_Minify - Fatal编程技术网

Javascript 更新到Chrome v65并开始出现以下错误:预期onClick listener是一个函数,而不是获取类型字符串

Javascript 更新到Chrome v65并开始出现以下错误:预期onClick listener是一个函数,而不是获取类型字符串,javascript,reactjs,google-chrome,onclick,minify,Javascript,Reactjs,Google Chrome,Onclick,Minify,我有一个React应用程序最近开始发出此错误 出现此错误时,我们的按钮/下拉列表均不起作用,但网页未冻结。它只发生在应用程序的一个部分。当我们导航到另一个部分并返回时,错误不会再次出现 我已经浏览了我们应用程序中的每一个onClick事件,没有一个函数可以作为字符串传入或作为字符串返回。尽管我们有一些onClick事件可以传递给NULL对象 但我们已经缩小了产生此错误的步骤: 当我们更新到Chrome版本65时,它才开始出现,该版本仅在2天前发布。该漏洞在以前的Chrome版本(v65之前)中

我有一个React应用程序最近开始发出此错误

出现此错误时,我们的按钮/下拉列表均不起作用,但网页未冻结。它只发生在应用程序的一个部分。当我们导航到另一个部分并返回时,错误不会再次出现

我已经浏览了我们应用程序中的每一个
onClick
事件,没有一个函数可以作为字符串传入或作为字符串返回。尽管我们有一些
onClick
事件可以传递给
NULL
对象

但我们已经缩小了产生此错误的步骤:

  • 当我们更新到Chrome版本65时,它才开始出现,该版本仅在2天前发布。该漏洞在以前的Chrome版本(v65之前)中没有出现
  • 这只发生在React应用程序的生产版本中,而不是在
    localhost
    上(这可能是缩小错误吗?)
  • 该漏洞不会发生在我们的其他应用程序中,这些应用程序也使用React构建,并使用类似的网页配置缩小
  • 有人知道为什么会发生这种错误,以及我们如何解决它吗


    我找到了解决办法。我仍然认为ChromeV65的缩小过程中有一个错误,但我开始从我的应用程序中删除可点击的组件,直到错误消失以清除有问题的组件


    原来是来自
    react bootstrap router
    库的
    导致了该错误。我们更换了
    react路由器
    链路组件,错误消失了

    结果表明,React的小型化/生产构建与Chrome65不兼容

    我们将process.env.NODE_env切换回“development”,直到找到更好的解决方案,或者Chrome用v65解决了这个问题


    更新:如果您使用的是redux()中的
    toJS()
    HOC,问题在于
    Object.entries()

    要暂时解决此问题,请将
    对象.条目
    替换为自定义
    条目
    函数:

    (ES6)

    const entries=x=>Object.keys(x).reduce((y,z)=>y.push([z,x[z]])&y,[])

    您应该能够将节点_ENV翻转回“生产”

    目前正在试图找出
    wrappedComponentProps
    对象导致问题的原因,但是像
    {myFunc:function(){}}
    这样的常规对象不会导致问题

    (如有任何帮助,我们将不胜感激!)


    在运行
    Object.entries()
    之前调用
    delete wrapperComponentProps[ANY-VALID-KEY]
    可以解决这个问题,因此我怀疑这与对象安全性/缓存有关。

    其他浏览器可以工作吗?我们没有为其他浏览器进行测试,因为我们的应用程序是内部的,用户只能使用Chrome。当然,如果你的代码只能在Chrome中运行,那么你可能会使用更多Chrome特有的东西来破坏其他浏览器,但不管怎样,在登录后我的应用程序中遇到同样的问题,测试一下会很有趣。该页面会抛出React错误94,就像prod中的错误一样,但不会在本地抛出任何东西。这完全破坏了我们的QA自动化,因为它依赖一个带有最新Chrome的Docker容器来运行Selenium测试。另一个注意事项:Chrome Canary(v67)似乎运行一切正常。@PP_vinnieg似乎公约数是缩小了的,因为代码与Chrome v65不兼容。。。有些库会产生这个bug。我认为这两种解决方案是:1)找到有问题的组件/函数,并尝试以某种方式重新编写它,或暂时使用其他组件库;2)在生产环境中暂时使用未缩小的React代码。啊,我们没有这个特定错误,也没有使用
    toJS
    ,但记录此错误并发布解决方案值得称赞。我们还考虑在生产中运行React的非小型构建,直到bug得到解决。
    Minified React error #94:
    
    Expected onClick listener to be a function, instead got type string