升级Node版本后出现TypeError

TypeError after upgrading Node version

我花了 6 个小时尝试解决这个问题,但我开始慢慢失去理智,所以请原谅我的笼统问题。

首先我正在使用:

节点:8.10.0 | npm:5.6.0 |纱线: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)

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

我知道该错误消息非常笼统,可能意味着很多事情,但希望有人根据我的上下文知道这意味着什么。

谢谢!

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

对于您的情况,我想您遇到的问题类似于 this one

检查 yarn 升级了哪些库并验证某些 API 是否发生了变化。

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

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

事件,虽然它并不是真正的 API 更改,因为他建议我的 JS 文件中只是错误地调用了 VueJS 构造函数,由于某种原因,它已被以前版本的VueJs 但显然不是当前版本。

对于任何遇到一些毫无意义的奇怪错误的人,我推荐以下内容:

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

尽管这些步骤可能看起来很明显,但您很容易忘记这么简单的事情,因为在使用现代 JS 时可能会出现数以百万计的问题。