node識別es6的 import/export

非梧不棲發表於2018-08-30

起因,原本只想搭建一個es6的環境,進行簡單的測試。結果發現 node 8 版本雖然支援 es6,但不支援import/export,這就很尷尬。

解決(很簡單)

1.1,使用babel手動搭建

首先,NodeJS 是 CommonJS 規範的實現。這樣就可以使用 babel 將es6的語法轉為 CommonJS 的語法即可。

  1. 需要如下2個關於 babel 的依賴:

npm install babel-register babel-preset-env --save-dev

  1. 需要 .babelrc 檔案

下面 2 種方式都可以

  • 使用轉換 ES2015+ 的 env preset
{
  "presets":[
    "env"
  ]
}
複製程式碼
  • 或直接使用轉 CommonJS 的 plugin
{
  "plugins": [
    "transform-es2015-modules-commonjs"
  ]
}
複製程式碼
  1. babel-register

當引入之後,之後通過 node 引入的帶 .es6, .es, .jsx 和 .js 字尾的所有後續檔案都將會被 Babel 轉譯。

require("babel-register");
複製程式碼

1.2,示例

  1. 文件結構
│  .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 安全一點。

node識別es6的 import/export

相關文章