代码之家  ›  专栏  ›  技术社区  ›  Rico Ocepek

升级节点版本后出现TypeError

  •  3
  • Rico Ocepek  · 技术社区  · 7 年前

    我正在努力解决这个问题6个小时,我慢慢开始失去理智,所以请原谅我的一般问题。

    首先,我正在使用:

    节点:8.10.0 | npm:5.6.0 |纱线:1.5.1

    我刚刚将项目升级到节点v8,npm拒绝安装所有依赖项,所以我 已安装纱线 这立即解决了问题。

    我的资料是用Laravel Mix汇编的,它利用网页、巴别塔。。。内部。

    安装和编译我的源代码现在工作得很好,但出于某些原因 我编译的js文件不再工作 (即使我降级到以前的节点版本6.10.0)。

    Uncaught TypeError: fn.bind is not a function
    at nativeBind (admin.js?id=8c4a6887899977ba8021:72515)
    at initMethods (admin.js?id=8c4a6887899977ba8021:75849)
    at initState (admin.js?id=8c4a6887899977ba8021:75617)
    at Vue._init (admin.js?id=8c4a6887899977ba8021:76936)
    at new Vue (admin.js?id=8c4a6887899977ba8021:77037)
    at Object../resources/assets/js/admin.js (admin.js?id=8c4a6887899977ba8021:83350)
    at __webpack_require__ (admin.js?id=8c4a6887899977ba8021:20)
    at Object.1 (admin.js?id=8c4a6887899977ba8021:83790)
    at __webpack_require__ (admin.js?id=8c4a6887899977ba8021:20)
    at ./node_modules/babel-loader/lib/index.js?{"cacheDirectory":true,"presets":[["env",{"modules":false,"targets":{"browsers":["> 2%"],"uglify":true}}]],"plugins":["transform-object-rest-spread",["transform-runtime",{"polyfill":false,"helpers":false}]]}!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/Autocomplete.vue.Object.defineProperty.value (admin.js?id=8c4a6887899977ba8021:63)
    

    我完全不知道这个错误意味着什么,更不用说是什么原因了。

    我知道这个错误消息是相当普遍的,可能意味着很多事情,但希望有人知道它在我的上下文中的含义。

    谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Rico Ocepek    7 年前

    @Ortomala Lokni 的回答把我推向了正确的方向。

    出于某种原因,我认为我的问题与我的构建脚本、npm、webpack或诸如此类的东西有关,当然,事实并非如此。

    事件,尽管这实际上不是API更改,因为他建议在我的JS文件中对VueJS构造函数的调用是错误的,由于某种原因,VueJS的早期版本忽略了该调用,但当前版本显然没有忽略该调用。

    对于任何遇到一些奇怪错误的人,我建议如下:

    • 首先:确定你真正的问题是什么-如果它编译了,那么它肯定与你的JS构建无关
    • 注释掉主文件中的所有JS代码
    • 此时应消除错误
    • 通过尝试逐行(或逐块)取消注释来缩小错误范围,并在每次取消注释后测试代码

    尽管这些步骤看起来很明显,但您很容易忘记这些简单的事情,因为在使用现代JS时,可能会有成千上万的事情发生。

        2
  •  1
  •   Ortomala Lokni    7 年前

    有时,当您升级库时,您必须调整一些代码。由于Javascript不是类型化语言,因此问题不会出现在编译时,而是出现在运行时。

    在你的情况下,我想你的问题类似于 this one

    检查哪些库已升级,并验证某些API是否已更改。

    推荐文章