配置babel爬坑之路


背景介绍:

在node.js 项目中,使用es6规范的语法,其中用了import导入模块,所以用babel编辑器帮助转。

项目过程:

首先:由于需要babel转译,所以下载 @babel/node @babel/core @babel/preset-env

其次:新建 ‘.babelrc’ 文件,并配置。如下:

 然后:在package.json中,配置脚本:nodemon --exec babel-node app.js【项目通过nodemon启动,app.js为入口文件】

最后:运行脚本,启动项目,此时项目正常启动。

这就完了吗?没有!!!发现通过pm2启动不了,查阅资料得知需要改变pm2解析器。具体解决办法请参考 《pm2 + babel-node 遇到的坑》

pm2解析器配置完成之后,启动之后提示babel-node路径不对,然后通过命令执行【babel-node app.js】发现babel-node找不到。

所以通过百度发现需要全局安装babel-cli babel-node。通过npm全局安装了babel-cli babel-node这两个模块,安装之后启动此时发现一个大坑,如下:

 发现版本不对,重新卸载再安装依旧不对,网上查找发现让有的让安装babel/cli有的让安装babel-cli,结果都尝试了还是不对

解决办法:

第一步:将项目中的模块删除 @babel/node @babel/core @babel/preset-env

第二步:将全局安装的babel-cli babel-node删除【一定要删除】

第三步:将node_modules删除,重新install

第四步:重新安装 @babel/node @babel/core @babel/preset-env 【安装完成启动,发现babel-node 又找不到了】

第五步:全局安装 @babel/cli @babel/node 【在启动好了。发现之前安装的babel/cli或babel-cli、babel-node而现在安装的是@babel/cli @babel/node】

关于第五步另外说一点:

之前安装(babel/cli或babel-cli)和 babel-node 的安装目录在 /usr/local/lib/node_modules 和其他模块同一级,如下图

 后边通过安装@babel/cli 和 @babel/node 发现他们被合并到@babel文件夹中了。

补充知识点:参考文件 -> https://segmentfault.com/q/1010000017876791

不过题主当时为了解决问题,引入了一堆冲突,这种情况首先应该移除所有 babel 相关依赖。
安装 babel-cli 默认安装依赖 babel/core 6.26.3,基本可以说这种不带 @ 的语法将停留在 v6 版本里。
所以要用 v7 的话,就应该使用 @babel/cli,提供 babel 命令行使用环境,这个版本并不会自动安装 @babel/core,而是需要自行安装匹配依赖,所以要能执行 babel,再加上使得 node 能运行 JavaScript 新特性,最小安装为:

npm install @babel/cli @babel/core @babel/node @babel/preset-env -D