Второй способ (внутри объявления Reporter
) - неправильный синтаксис.
Статические операторы импорта всегда должны быть в верхней части модуля.
Возможно, вы путаете статическое с динамическим импортом. Динамический импорт будет в порядке в объявлении переменной и будет выглядеть так, например:
const Reporter = {
createDirectory: (dir) => {
import("fs").then(fs => {
if (!fs.existsSync(dir)) {
mkdirp.sync(dir)
}
});
}
}
Преимущество использования динамических модулей состоит в том, что вы можете использовать такие инструменты, как веб-пакет, для выполнения разбиения кода , т. Е. Оптимизировать размер вашего исходного комплекта javascript под код, который необходим при первом отображении страницы. Динамический импорт загружается асинхронно из других пакетов только при необходимости.
Если вы не используете разделение кода, рекомендуется статический импорт, согласно документации Mozilla Developer Network .