2016-12-02 5 views
4

Я смотрю проект NodeJS, который загружается с GitHub. Она имеет основной файл, server.js, который использует ES6 импорт модуля синтаксис вроде этого:Поддерживает ли NodeJS загрузку модуля стиля «Импорт»?

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 никогда не определяет такой синтаксис модуля. В чем причина того, что мы можем использовать его здесь? Спасибо за помощь.

+0

Это не поддерживает его самостоятельно. Некоторые люди используют Вавилон, чтобы обойти это. – Brad

ответ

7

При запуске npm start выполняется start script in the package.json, что означает, что выполняется start.js.

start.js использует babel-register, чтобы преобразовать новый синтаксис ES6 (включая импорт) в обычный ES5 JavaScript, который узел понимает «на лету». .babelrc показывает, что используется es2015 preset, который преобразует код ES2015 (ES6) в обычный ES5 JS.

Определенный трансформатор, который имеет для вас значение, - transform-es2015-modules-commonjs, который преобразует import в require, как и ожидалось.

+1

Благодарим за быстрый ответ. – IcyBrk

Смежные вопросы