Импорт ES6 в итерации, а не на верхнем уровне

Это действительно 2 вопроса в 1...

У меня есть серверная часть Node с промежуточным программным обеспечением Express. При входе в приложение я пытаюсь загрузить экспресс-маршруты через итерацию. Раньше это делалось с помощью requirejs, но я хочу отказаться от всего этого и вместо этого использовать импорт/экспорт es6.

Мой текущий код (на основе MEAN.js):

let initModulesServerPolicies = (app) => {
    forEach(config.files.server.policies, (policyPath) => {
        require(path.resolve(policyPath)).invokeRolesPolicies();
    });
};

Я пытаюсь как-то заставить свой код выглядеть так:

let initModulesServerPolicies = (app) => {
    forEach(config.files.server.policies, (policyPath) => {
        import path.resolve(policyPath).invokeRolesPolicies();
    });
};

Теперь основная ошибка, которая появляется здесь:

«импорт» и «экспорт» могут отображаться только на верхнем уровне

Я могу продолжать использовать requirejs, но для этого мне потребуется изменить экспорт es6 в этих файлах политики обратно на module.exports.

Я использую babel-polyfill, чтобы позволить мне использовать импорт/экспорт es6 на сервере.

Примечание: config.files.server.policies будет массивом относительных путей. Размер этого массива будет часто меняться, так как я добавляю/вычитаю модули из своего приложения, поэтому было бы предпочтительнее не импортировать их явно, а итерация гораздо предпочтительнее.

Итак, мои 2 вопроса:

  1. Можно ли инкапсулировать импорт/экспорт внутри функции (то есть не на верхнем уровне)
  2. Можно ли импортировать несколько файлов за одну итерацию?

Я ожидаю такого рода сбоев, когда пытаюсь использовать код es6, поскольку он еще не полностью поддерживается, поэтому, если это невозможно сделать, я найду другой способ.


person wmash    schedule 14.01.2018    source источник
comment
Нет, import и export могут появляться только на самом внешнем уровне вложенности модуля. Они не могут быть даже внутри обычного оператора (например, блока цикла while).   -  person Pointy    schedule 14.01.2018
comment
stackoverflow.com/questions/29329662/   -  person Pointy    schedule 14.01.2018