Это действительно 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 вопроса:
- Можно ли инкапсулировать импорт/экспорт внутри функции (то есть не на верхнем уровне)
- Можно ли импортировать несколько файлов за одну итерацию?
Я ожидаю такого рода сбоев, когда пытаюсь использовать код es6, поскольку он еще не полностью поддерживается, поэтому, если это невозможно сделать, я найду другой способ.
import
иexport
могут появляться только на самом внешнем уровне вложенности модуля. Они не могут быть даже внутри обычного оператора (например, блока циклаwhile
). - person Pointy   schedule 14.01.2018