Как использовать литерал шаблона в операторе импорта?

Когда эта строка выполняется:

import stats from `./${process.env.STATS}`

сообщается об ошибке ниже:

Ошибка синтаксического анализа: неожиданный токен `

Модуль может быть успешно загружен с помощью выражения:

const stats = require(`./${process.env.STATS}`);

Оператор import, похоже, требует обычной строки, поскольку он работает с оператором:

import stats from './statsdir'

где './statsdir' — значение process.env.STATS.

Почему возникает ошибка?


person gnerkus    schedule 30.04.2016    source источник
comment
какую версию узла вы используете?   -  person QoP    schedule 30.04.2016
comment
Я использую версию 6.0. Я также использую babel-cli для компиляции исходных файлов.   -  person gnerkus    schedule 30.04.2016
comment
если вы используете babel, загружаете ли вы правильные пресеты в свой .babelrc?   -  person QoP    schedule 30.04.2016
comment
В настоящее время я использую предустановку es2015.   -  person gnerkus    schedule 30.04.2016
comment
Можете ли вы показать нам свой .babelrc и то, как вы выполняете свое приложение? Похоже, он не загружает ваши пресеты   -  person QoP    schedule 30.04.2016
comment
Невозможно: stackoverflow.com/ вопросы/29168433/   -  person Dogbert    schedule 30.04.2016
comment
Ошибка возникает из-за того, что импорт принимает только строку.   -  person    schedule 30.04.2016
comment
@qop это не имеет ничего общего с Babel или пресетами. Это недопустимый синтаксис.   -  person    schedule 30.04.2016


Ответы (1)


Почему возникает ошибка?

Кажется, вы сами нашли ответ:

Оператор import, кажется, требует обычной строки

Точно. import нужна строка литерал. Местоположение импорта не может быть динамическим.

Связано: Имя импорта переменной ES6 в node.js?

person Felix Kling    schedule 30.04.2016