忽略缺少的依赖项

Ignore missing dependencies

本文关键字:依赖      更新时间:2023-09-26

我在编译捆绑包时遇到了一些问题。基本上,我有webpack 1.13和npm3,当我试图捆绑我的文件时,我会发现一些依赖项找不到。更具体地说,我进口了log4js包,得到了

ERROR in ./~/log4js/lib/appenders/hipchat.js
Module not found: Error: Cannot resolve module 'hipchat-client' in c:'vhosts'not
ifications-daemons'node_modules'log4js'lib'appenders
 @ ./~/log4js/lib/appenders/hipchat.js 2:20-45
ERROR in ./~/log4js/lib/appenders/loggly.js
Module not found: Error: Cannot resolve module 'loggly' in c:'vhosts'notificatio
ns-daemons'node_modules'log4js'lib'appenders
 @ ./~/log4js/lib/appenders/loggly.js 3:11-28
ERROR in ./~/log4js/lib/appenders/mailgun.js
Module not found: Error: Cannot resolve module 'mailgun-js' in c:'vhosts'notific
ations-daemons'node_modules'log4js'lib'appenders
 @ ./~/log4js/lib/appenders/mailgun.js 5:14-35
ERROR in ./~/log4js/lib/appenders/slack.js
Module not found: Error: Cannot resolve module 'slack-node' in c:'vhosts'notific
ations-daemons'node_modules'log4js'lib'appenders
 @ ./~/log4js/lib/appenders/slack.js 2:12-33
ERROR in ./~/log4js/lib/appenders/smtp.js
Module not found: Error: Cannot resolve module 'nodemailer' in c:'vhosts'notific
ations-daemons'node_modules'log4js'lib'appenders
 @ ./~/log4js/lib/appenders/smtp.js 4:13-34

问题是我的捆绑包中不需要所有这些可选模块。sequelize也是如此,webpack尖叫着说我没有它支持的所有驱动程序,即使我只需要mysql驱动程序。是否有任何配置选项或插件可以忽略所有缺失的依赖项,并让捆绑包在没有它们的情况下编译?

有了webpack 5及以上版本,IgnorePlugin的用法发生了变化。更新示例:

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin({ resourceRegExp: /^/u, contextRegExp: /log4js/u })
  ],
};

或者:

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin({ resourceRegExp: /^(hipchat-client|loggly|mailgun-js|slack-node|nodemailer)$/u })
  ],
};

当我试图捆绑某个依赖log4j的包时,也遇到了同样的错误。我的webpack版本是4.5.0。感谢@Tony Tai Nguyen的回答,我修复了webpack忽略插件的特定错误,并将以下配置添加到我的webpack.config.js文件中。

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin(/log4j/)
  ],
};

是的,有一个插件可以帮助你做到这一点。你需要添加这样的东西:

new webpack.IgnorePlugin(new RegExp("/(node_modules|nodemailer)/"))

到您的webpack插件。更多信息可在此处找到:https://webpack.github.io/docs/list-of-plugins.html#ignoreplugin