起因,原本只想搭建一個
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 安全一點。