Поддерживает ли NodeJS загрузку модуля в стиле "Импорт"?
Я смотрю на проект NodeJS, который загружается с GitHub. У него есть основной файл, 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 никогда не определяет такой синтаксис модуля. По какой причине мы можем использовать это здесь? Спасибо за помощь.
1 ответ
Когда ты бежишь npm start
, скрипт запуска в package.json
это означает, что start.js
исполняется.
start.js
использования babel-register
перенести новый синтаксис ES6 (включая импорт) в простой ES5 JavaScript, который Node понимает на лету. .babelrc
показывает, что es2015
используется пресет, который преобразует код ES2015 (ES6) в обычный ES5 JS.
Конкретный трансформатор, который важен для вас transform-es2015-modules-commonjs
, который преобразует import
в require
как и ожидалось.