2016-12-02 109 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

相关问题