起因,原本只想搭建一个
es6
的环境,进行简单的测试。结果发现 node 8 版本虽然支持es6
,但不支持import/export
,这就很尴尬。
解决(很简单)
1.1,使用babel手动搭建
首先,NodeJS 是 CommonJS 规范的实现。这样就可以使用 babel 将es6
的语法转为 CommonJS 的语法即可。
- 需要如下2个关于 babel 的依赖:
npm install babel-register babel-preset-env --save-dev
- 需要
.babelrc
文件
下面 2 种方式都可以
- 使用转换 ES2015+ 的 env preset
{
"presets":[
"env"
]
}
复制代码
- 或直接使用转 CommonJS 的 plugin
{
"plugins": [
"transform-es2015-modules-commonjs"
]
}
复制代码
- babel-register
当引入之后,之后通过 node 引入的带 .es6, .es, .jsx 和 .js 后缀的所有后续文件都将会被 Babel 转译。
require("babel-register");
复制代码
1.2,示例
- 文档结构
│ .babelrc
│ package.json
└─src
index.js
a.js
b.js
复制代码
// index.js
require("babel-register")
require('./a')
复制代码
// a.js
import { bar } from './b'
bar()
复制代码
// b.js
export function bar () {
console.log('b')
}
复制代码
这样 node ./src/index.js
就会输出 b
2,node 9 版本以上,已经支持了 es6的 import/export
查看 Node 官网,现在稳定版还是 8 版本,所以最好还是使用 babel 安全一点。