我正在查看从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文档从未指定过这样的模块语法。我们在这里使用它的原因是什么?谢谢你的帮助。
答案 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
。