升级Node版本后出现TypeError错误

3

我已经花了6个小时来解决这个问题,慢慢地开始失去理智,请原谅我的笼统问题。

首先,我正在使用:

Node:8.10.0 | npm:5.6.0 | Yarn:1.5.1

我刚刚将项目升级到Node v8,但npm拒绝安装所有依赖项,所以我安装了yarn,这立即解决了问题。

我的源码使用Laravel Mix编译,它在内部使用Webpack、Babel等工具。

现在,我的安装和编译工作完美无缺,但由于某种原因,我的编译后的js文件不再起作用(即使我降级到先前的Node版本-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个回答

2
有时,当你升级库时,你需要适应一些代码。由于JavaScript不是一种类型化的语言,问题在编译时不会出现,而是在运行时出现。
在你的情况下,我想你可能有一个类似this one的问题。
检查yarn升级了哪些库,并验证是否有一些API已经更改。

谢谢你的提示 - 然而,由于yarn使用相同的package.json文件,在我的设置中它只能执行小版本升级。不过我还是会检查一下! - Rico Ocepek

2

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

由于某种原因,我认为我的问题与我的构建脚本、npm、webpack或任何其他相关内容有关,但当然不是这样。

尽管正如他所建议的那样,它并不是真正的API更改,而只是我的JS文件中对VueJS构造函数的错误调用,但由于某种原因,它被之前发布的VueJs忽略了,但显然不会被当前版本忽略。

对于任何遇到一些令人困惑的奇怪错误的人,我建议以下操作:

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

尽管这些步骤可能看起来很明显,但当使用现代JS进行工作时,您可能会因为可能导致故障的数百万件事情而忘记这样简单的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接