起因,原本只想搭建一个
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.jsrequire("babel-register")require('./a')复制代码
// a.jsimport { bar } from './b'bar()复制代码
// b.jsexport function bar () { console.log('b')}复制代码
这样 node ./src/index.js
就会输出 b
2,node 9 版本以上,已经支持了 es6的 import/export
查看 Node 官网,现在稳定版还是 8 版本,所以最好还是使用 babel 安全一点。