4

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

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 文档从未指定这种模块语法。我们可以在这里使用它的原因是什么?谢谢你的帮助。

4

1 回答 1

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

于 2016-12-02T21:31:51.363 回答