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

Icy*_*Brk 4 node.js es6-modules

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

import express from 'express';
import bodyParser from 'body-parser';
import fs from 'fs';
import { search } from './lib/words';
Run Code Online (Sandbox Code Playgroud)

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

var express = require(express)
var bodyParser = require('body-parser')
...
Run Code Online (Sandbox Code Playgroud)

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

Aur*_*001 7

运行时npm start,运行中的启动脚本package.json,意味着start.js执行.

start.js用于babel-register将新的ES6语法(包括导入)转换为Node即时理解的普通ES5 JavaScript.在.babelrc该节目es2015预设正在被使用,其中ES2015(ES6)码转换为正常ES5 JS.

这对你很重要的特定变压器transform-es2015-modules-commonjs,这将改变importrequire如预期.