【问题标题】:Ignore missing dependencies忽略缺少的依赖项
【发布时间】:2016-04-29 12:21:08
【问题描述】:

我在编译我的包时遇到了一些问题。基本上我有 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 驱动程序。是否有任何配置选项或插件可以忽略所有缺少的依赖项并让包在没有它们的情况下编译?

【问题讨论】:

    标签: javascript npm webpack


    【解决方案1】:

    在 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 })
      ],
    };
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        是的,有一个插件可以帮助您解决这个问题。您需要添加如下内容:

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

        到你的 webpack 插件。更多信息可以在这里找到:https://webpack.github.io/docs/list-of-plugins.html#ignoreplugin

        【讨论】:

          猜你喜欢
          • 2010-11-23
          • 1970-01-01
          • 1970-01-01
          • 2017-12-25
          • 2015-04-18
          • 2020-03-24
          • 2012-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多