2016-12-02 106 views
4

我正在查看從GitHub下載的NodeJS項目。它有一個主文件,server.js,使用這樣的ES6模塊導入語法:NodeJS是否支持「導入」風格的模塊加載?

import express from 'express'; 
import bodyParser from 'body-parser'; 
import fs from 'fs'; 
import { search } from './lib/words'; 

我有版本的NodeJS安裝4.6.0,這是很老了,我不認爲它支持此語法。相反,它應該是這樣的:

var express = require(express) 
var bodyParser = require('body-parser') 
... 

但是我可以正確無誤運行這個項目,我想表明,支持的NodeJS這句法,但文件的NodeJS從未指定這樣的模塊語法。我們可以在這裏使用它的原因是什麼?謝謝你的幫助。

+0

它不支持它自己。有些人使用Babel來解決這個問題。 – Brad

回答

7

當您運行npm start時,運行start script in the package.json,這意味着start.js得到執行。

start.js使用babel-register將新的ES6語法(包括導入)轉換爲Node可以即時理解的普通ES5 JavaScript。 .babelrc顯示正在使用es2015 preset,它將ES2015(ES6)代碼轉換爲正常的ES5 JS。

對您很重要的特定變壓器是transform-es2015-modules-commonjs,它將按預期將import轉換爲require

+1

謝謝你的快速回復。 – IcyBrk

相關問題