Задать вопрос
JastaFly
@JastaFly

Ошибка Uncaught ReferenceError: exports is not defined?

После обновления до webpack 5 в консоли браузера получаю ошибку:
Uncaught ReferenceError: exports is not defined
Экспорт модуля вызывающего ошибку осуществляется так:
let sliders = {
....
}

module.exports = sliders

Импорт осуществляется так:
import sliders from './js/sliders/sliders'
Далее происходит экспорт в данного модуля в глобальный объект приложения и именно в этом месте возникает ошибка:
exports.sliders = sliders
6735cf20a437a507956720.png
Подскажите в чём проблема, на старой сборке всё работало?
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
JastaFly
@JastaFly Автор вопроса
Решить проблему помогла замена экспорта модулей с:
exports.sliders = sliders
На:
export {
    sliders,
    .....
}

В главном JS файле сборки (Webpack 5)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
https://github.com/webpack/webpack/issues/12040
https://github.com/webpack/webpack/issues/4039#iss...
Now that Babel 7.x is out, I'll just say that this should essentially be resolved. The only time you should see this, with Babel 7.x, is if you're doing one of:

You've actually using import and module.exports in the same file, which is not allowed by Webpack. You can sidestep this by setting "modules": "commonjs", which will make Babel compile the import to a require. This breaks tree shaking, as mentioned above though, so fixing your code would be a better idea.
You're using useBultins: 'entry'/'usage, or @babel/plugin-transform-runtime, and you are running Babel on CommonJS files (either your own, or in random node_modules, if you're trying to compile that). Babel assumes files are ES modules by default, meaning those transforms would insert import statements into your file, triggering case 1. above. You can avoid this issue by setting sourceType: "unambiguous" in your Babel configuration, which will tell it to guess the type, like Webpack does, instead of assuming all files are modules.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы