node编译程序踩坑及解决方案:ES6转ES5

今天笔者正在学习Redux,编写了一个程序准备运行体会一下,代码如下:

import {createStore} from 'redux'

function counter(state = 0, action) {
  switch (action.type) {
  case 'INCREMENT':
    return state + 1;
  case 'DECREMENT':
    return state - 1;
  default:
    return state;
  }
}

let store = createStore(counter);

store.subscribe(() =>
  console.log(store.getState())
);

store.dispatch({ type: 'INCREMENT' });
// 1
store.dispatch({ type: 'INCREMENT' });
// 2
store.dispatch({ type: 'DECREMENT' });
// 1

使用node编译的时候,突然报了一个语法错误???
node编译程序踩坑及解决方案:ES6转ES5_第1张图片大家也看到了,里面显示我的第一句导入语句语法有问题,一开始我也以为自己写错了,但反反复复检查了几次之后发现没错,命名导入这个ES6的语法不就是这么写吗!直到后面求助了万能的搜索引擎才知道:原来node.js里面只支持部分的ES6语法!

所以像我那第一句ES6的语法node识别不了,就当然认为是错的了。问题找到就要开始解决了,既然识别不了ES6,那就试试转换成ES5呗!这里介绍一下如何将ES6的语法转换成ES5的方法:

1、全局安装babel-cli

npm install -g babel-cli

2、项目下安装babel-cli

npm install babel-cli --save-dev 
npm install babel-core --save-dev

3、项目下安装ES2015

npm install babel-preset-es2015 --save-dev

4、根目录下新建.babelrc文件,并复制如下内容:

{ 
	'presets':['es2015'], 
	'plugins':[] 
}

安装完成,我们来试试效果。使用babel命令对刚才的程序进行转换:
node编译程序踩坑及解决方案:ES6转ES5_第2张图片可以看到,刚才的程序已经完全转换成了ES5的语法格式。

当然,我们还可以直接使用babel-node来对程序同时进行ES5语法的转换和程序的编译运行:
在这里插入图片描述
可以看到这时候程序已经可以正常执行了!填坑完成。

你可能感兴趣的:(es,es6/es7,javascript,reactjs)