去年年底发布的 parcel.js 在年底可谓是火了一把,短短一个多月的时间在 GitHub 热门排行榜上名列前茅.因其几乎零配置的易用性,相比 webpack 的复杂配置收获了大量关注及好评,甚至有人预言未来大有超过 Webpack 之趋.我也赶紧尝试一下,发现确实非常简单易用,但是一开始,插件还是比较少,相信未来会越来越成熟好用.以后如果有机会我会专门写一篇关于 parcel.js 的文章,说了那么多废话,其实接下来我要说的是 nvm(2333...)
遇到问题
我在使用 parcel.js 打包项目的时候出现了下面的错误:
报错打印
我在仔细检查完代码并且核实项目配置没有问题后,没办法只能求助万能的 Google,结果在 GitHub 上找到了错误的原因,parcel.js 使用了 Async 函数,默认 Node.js 8 以上才支持的,低于 8 的话需要使用 babel 配置.我查看了一下自己的 Node.js 版本,如下:
当前 node 版本
找到问题原因后,我想升级一下 node 不就解决问题了.但又一想,公司最近在做的项目有用到 node,贸然升级项目报错就麻烦了.这时候,我想到了 nvm, 其实很早之前就看过,当时觉得电脑已经安装了 node 环境了,卸载重新安装费事就没有用它.但是现在需要用新版本的 node 才可以用 parcel.js,我决定卸载 node,重新用 nvm 安装,管理 node 版本.
首先我遇到的问题就是 mac 下如何彻底卸载 node 呢,因为当时使用 Homebrew 安装的,感觉直接卸载,应该不彻底.于是我上网查了很多文档,亲身实践如下:
Mac os 下彻底卸载 node
1.删除/usr/local/lib中的所有node和node_modules
2.删除/usr/local/lib中的所有node和node_modules的文件夹
3.如果是从brew安装的, 运行brew uninstall node
4.检查~/中所有的local, lib或者include文件夹, 删除里面所有node和node_modules
5.在/usr/local/bin中, 删除所有node的可执行文件
6.最后运行以下代码:
sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /opt/local/bin/node
sudo rm /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
(感谢知乎@haochuan)
彻底卸载完 node 后,然后按照 Github 上 nvm 安装文档一步一步安装就好了.有了 nvm 你就可以随心所欲的安装,切换你想要任何版本的 node 了.
已安装 node 版本
哈哈,随便切换 node 版本,感觉真棒.
经过这件事,我在思考,其实我很早就知道了会有遇到 node 版本这个问题.但是怕麻烦就没有理会,总感觉不一定会遇到,但是真到遇到了,还是要解决的.平时写代码也是一样的,考虑全面再去实现代码,哪些模块需要封装,都要考虑好,并实现.不能因为麻烦就不去做,当你最终遇到自己留下的坑的时候,还是要自己去填的.往往填坑的同时会带来更大的痛苦.
来源: http://www.jianshu.com/p/fd167951d9bb