NodeJS是否支持"导入"样式模块加载?

时间:2016-12-02 21:27:47

标签: node.js es6-modules

我正在查看从GitHub下载的NodeJS项目。它有一个主文件string,它使用ES6模块导入语法,如下所示:

server.js

我安装了NodeJS版本4.6.0,这很老了,我认为它不支持这种语法。相反,它应该是:

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

但是我可以正确地运行这个项目而没有错误,我认为这表明NodeJS支持这种语法,但是NodeJS文档从未指定过这样的模块语法。我们在这里使用它的原因是什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分: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