Webpack: ошибка при выпуске
У меня есть импорт примерно так:
import { foo } from 'bar';
Есть ли способ заставить Webpack выкинуть ошибку, если foo
не определен?
Обратите внимание, что я использую Babel, если это имеет значение.
Ответы
Ответ 1
Как Тобиас К. указал в комментариях, другой ответ неверен. Конфигурирование strictModuleExceptionHandling: true
не приведет к ошибке времени компиляции, если вы попытаетесь импортировать модуль, который не существует.
Правильная конфигурация strictExportPresence: true
, доступная только в webpack v2.3.0 и более поздних версиях. (Более ранние версии могут показывать только предупреждение, а не ошибку.)
Ответ 2
Можно настроить webpack 2 на ошибку при попытке импорта с помощью output.strictModuleExceptionHandling
. Функциональность была добавлена этим запросом на растяжение https://github.com/webpack/webpack/pull/3302, но он еще не задокументирован. Здесь как его использовать:
module.exports = {
entry: {
main: "./main.js",
},
output: {
filename: "[name].bundle.js",
strictModuleExceptionHandling: true
}
}
Теперь, если я пытаюсь импортировать из файла, который не существует, или я делаю импорт, который разрешает undefined
, я получаю сообщения об ошибках и предупреждениях в консоли webpack:
WARNING in ./js/pedigree.js
32:35-49 "export 'default' (imported as 'DisorderLegend') was not found in './disorderLegend'
ERROR in ./js/pedigree.js
Module not found: Error: Can't resolve './OkCancelDialogue' in '/home/tim/workspace/projects/public/js/ext-lib/panogram/js'
@ ./js/pedigree.js 5:0-54
@ ./js/viewerPedigree.js
@ ./main.js
@ multi (webpack)-dev-server/client?http://localhost:8080 ./main.js
webpack: Failed to compile.
В консоли хром вы получите предупреждение, подобное этому:
![предупреждающее сообщение в хроме]()
Ответ 3
При использовании strictExportPresence ниже отображается ошибка Недопустимый объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API. - configuration.output имеет неизвестное свойство 'strictExportPresence'.