Webpack - не вставлять ошибки на отсутствующий модуль - PullRequest
0 голосов
/ 01 июля 2018

Когда webpack не может обработать, требуется вместо этого вставить код в код.

Создание из этого кода:

var binding = require('./src/build/' + builds[i] + '/DTraceProviderBindings');

Этот код:

var binding = !(function webpackMissingModule() { var e = new Error("Cannot find module 'undefined'"); e.code = 'MODULE_NOT_FOUND'; throw e; }());

Как не дать веб-пачку вставить new Error ...?

Этот код из библиотеки dtrace-provider . И действительно, насколько я знаю, эта папка / файл недействительна. Я думаю, что это ошибка там. Проблема в том, что когда мы оставляем код в (код webpackMissingModule()), мы начинаем получать неожиданные ошибки внутри нашего приложения. Удаление этой строки из окончательного комплекта исправляет наши проблемы.

Проблема в том, что мы сами не используем библиотеку dtrace-provider. Это зависимость как минимум от 3 других библиотек, которые мы используем. Так что я думаю, что разветвлять его и менять его самостоятельно - не очень хорошее решение.

Наш уменьшенный webpack.production.js файл:

const merge = require('webpack-merge');    
const common = require('./webpack.common');

module.exports = merge(common, {
  mode: 'production',
  optimization: {
    minimize: false
  }
});

Я пытался использовать игнорируемый плагин, но это не помогло / возможно, у меня не было правильного регулярного выражения. Я попытался использовать плагин замены, это не помогло. Не знаю почему, но я не смог избавиться от этого сообщения об ошибке. Текущее решение состоит в том, чтобы запустить простой скрипт после завершения сборки, который заменяет строку aka "build": "webpack --config webpack.production.js && node fixProduction.js",

Также принимаем любое другое решение проблемы. Спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете добавить фиктивную функцию require в модуль, используя imports-loader:

module: {
  rules: [
    {
      test: require.resolve('node-dtrace-provider'),
      loader: 'imports-loader?require=>function() { return {}; }'
    }
  ]
}

Окончательный комплект будет выглядеть так:

function() {
  var require = function() { return {}; };
  ...
  var binding = require('./src/build/' + builds[i] + '/DTraceProviderBindings');
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...