升级 node 版本至 6.x 遇到的问题和解决方案

前言

现在 Node.js 官网已经将 LTS 的 6.x 版本为推荐分支默认让大家下载了,而截至今天以前我的系统上的仍然是 4.6 版本,新版强迫症迫使我升级到了最新 LTS 版本。

感受

在 4.x 还是推荐分支的时候,如果尝鲜使用 6.x 版本的话,问题会不少,主要是库的问题。而且由于当时 6.x 并不被推荐,所以我也就没当回事儿了。
现在升级到了 6.x,发现第三方库几乎全正常了(也许还有,但是我没使用)。唯独有一个非常常见和必要的库出问题了,那就是 node-sass,但其实也不是问题(下面会解决)。所以最直观的感受是能稳定使用了。

ES2015 原生支持

目前最新的推荐版本 v6.9.2 和最新的 Nightly 分支 8.x 版本一样,都是 99% 特性的支持程度。此处我没有看日志细节,所以并不能总结出是否有差异,当前就当没差别好了。而我之前的 4.6.x 版本 es2015 支持还未达到 60%(确实太老了),所以如果用新版本 node 作后端的话基本可以完全舍去 babel 或者其他 es2015 转译器,意义非常之大。
当然你要更高特性支持(ES7)的话当我没说。

node-sass 问题

如果你之前用的 node4.x 一下子换到 node6.x,那么无论如何你的所有项目的 node-sass 依赖全部故障。

解决方案:

  1. 升级 node-sass 至最新版本 4.x.x 或以上(貌似 3.8 以上就支持了,但用最新的当然最好了)。
  2. 直接删除 node_modules/node-sass/vendor 目录
  3. rebuild 这个库

    npm rebuild node-sass
              

    经过一定时间的等待,会发现 vendor 目录被创建出来了,build 出了新的 binding.node 文件,那么大功告成。

最后

你可以用我的 shell 升级 node 版本,如果从来没有用过,那么在这之前建议删除 node 相关环境变量。
直接执行下面的命令升级(自行替换路径和用户名):

curl -sL http://shell.bluerain.io/release/commons | sudo bash -s node /usr/local root