Получить Webpack для предупреждения о пропавших пакетах при сборке

#javascript #webpack

#javascript #webpack

Вопрос:

Время от времени я вижу что-то вроде следующего в моем файле пакета:

 var _TodoListContainer = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module "containers/TodoListContainer.react""); e.code = 'MODULE_NOT_FOUND'; throw e; }()));
  

Как я могу заставить Webpack предупреждать о пропавших файлах при сборке?

Ответ №1:

API узла webpack предоставляет вам объект статистики в обратном вызове:

 var webpack = require("webpack");

// returns a Compiler instance
webpack({
    // configuration
}, function(err, stats) {
    // ...
});
  

Этот объект содержит всю необходимую вам информацию, и вы можете использовать его для программной обработки ошибок:

 var webpack = require("webpack");
webpack({
    // configuration
}, function(err, stats) {
    if(err)
        return handleFatalError(err);
    var jsonStats = stats.toJson();
    if(jsonStats.errors.length > 0)
        return handleSoftErrors(jsonStats.errors);
    if(jsonStats.warnings.length > 0)
        handleWarnings(jsonStats.warnings);
    successfullyCompiled();
});
  

Если вы используете CLI с конфигурацией Webpack по умолчанию, он должен предоставить вам обратную связь об отсутствующих зависимостях из коробки. Вы можете использовать флаг командной строки —display-error-details для уточнения деталей.

Комментарии:

1. Я использую Gulp и stream.on('error', util.log) для обработки ошибок. В этом случае ошибок не возникает.

2. Ошибки будут выдаваться только при фатальных ошибках. Вы можете использовать задачу здесь и проверить объект статистики, переданный при обратном вызове, как я проиллюстрировал в последнем примере моего ответа.