解决 Webpack 打包时出现 TypeError: Cannot read property 'minify' of undefined 的问题

阅读时长 5 分钟读完

在前端开发中,Webpack 是一个非常常用的工具来进行代码的打包和优化。可是在使用 Webpack 进行打包的时候,有时候会遇到 TypeError: Cannot read property 'minify' of undefined 的问题,这个问题一般是由于使用了不兼容的 Webpack 和 UglifyJS 版本引起的,如果不解决的话,会影响代码的正常打包,导致项目无法正常运行。

问题原因

在 Webpack 的配置文件中,一般会添加如下的代码来进行代码压缩:

-- -------------------- ---- -------
----- -------------- - -----------------------------------
-------------- - -
    -- ---
    ------------- -
        ---------- -
            --- ----------------
                -- ---
            --
        -
    -
-

在这段代码中,使用了 UglifyJS 来进行代码的压缩。而在不兼容的 Webpack 和 UglifyJS 版本中,UglifyJS 的 API 发生了变化,导致了错误的发生。

解决方案

解决方案很简单,就是将 UglifyJS 升级到兼容的版本即可。

方案一:降级 Webpack

一个解决方法是降级 Webpack 到 UglifyJS 支持的版本。在 package.json 中使用以下命令可以降级 Webpack:

请注意:降级 Webpack 可能导致其他问题的出现,如其他依赖项的版本更新问题等。所以此方法不是最佳方法。

方案二:升级 UglifyJS 到兼容的版本

另一个更好的解决方法是升级版本,将 UglifyJS 升级到兼容的版本。

在 package.json 中使用以下命令可以升级 UglifyJS:

这里使用 1.2.7 版本仅作参考,具体版本号还需根据项目需求而定。

升级后,修改 Webpack 的配置:

-- -------------------- ---- -------
----- -------------- - -----------------------------------
-------------- - -
    -- ---
    ------------- -
        ---------- -
            --- ----------------
                -------------- -
                    ------- -
                        --------- -----
                    -
                -
            --
        -
    -
-

需要注意的是,在升级 UglifyJS 的过程中,如果使用了 UglifyJS-webpack-plugin 的旧版本,在升级后需要对相关配置进行修改,如上面代码所示。

方案三:升级 Webpack 和 UglifyJS 的最新版本

还有一种解决方法是将 Webpack 和 UglifyJS 升级到最新版本。这种方法需要注意的是,在升级后,可能会导致其他依赖项出现版本更新问题,可能需要对依赖项进行相应的调整。

在 package.json 中使用以下命令可以升级 Webpack 和 UglifyJS:

示例代码

为了更好的理解,下面提供一个示例代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------------- - -----------------------------------

-------------- - -
    ------ -----------------
    ------- -
        --------- ------------
    --
    ------- -
        ------ -
            -
                ----- --------
                -------- ---------------
                ---- -
                    ------- ---------------
                -
            -
        -
    --
    ------------- -
        ---------- -
            --- ----------------
                -------------- - ------- - --------- ----- - --
            --
        -
    --
    -------- -
        --- ----------------------
            ----------------------- -----------------------------
        --
    -
--

总结

在使用 Webpack 进行打包时,可能会遇到 TypeError: Cannot read property 'minify' of undefined 的问题,这个问题一般是由于使用了不兼容的 Webpack 和 UglifyJS 版本引起的。解决方案包括降级 Webpack,升级 UglifyJS 到兼容的版本,升级 Webpack 和 UglifyJS 到最新版本。在解决问题之前,需要了解其原因,并根据实际情况选取解决方案。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493d91248841e9894170375

纠错
反馈