Uglify,无法读取未定义的属性'reset'



我使用 webpack2 来构建我的应用程序,但是当使用 uglify-js + uglifyjs-webpack-plugin 时。我有一些问题:

ERROR in vendors.js from UglifyJs
TypeError: Cannot read property 'reset' of undefined
at F:GithubProgramMy-testWebpackwww2node_modules_uglifyjs-webpack-plugin@0.4.3@uglifyjs-webpack-plugindistindex.js:99:22
at F:GithubProgramMy-testWebpackwww2node_modules_uglifyjs-webpack-plugin@0.4.3@uglifyjs-webpack-plugindistindex.js:231:9
at Array.forEach (native)
at Compilation.<anonymous> (F:GithubProgramMy-testWebpackwww2node_modules_uglifyjs-webpack-plugin@0.4.3@uglifyjs-webpack-plugindistindex.js:54:19)
at Compilation.applyPluginsAsyncSeries (F:GithubProgramMy-testWebpackwww2node_modules_tapable@0.2.6@tapablelibTapable.js:142:13)
at self.applyPluginsAsync.err (F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompilation.js:635:10)
at Compilation.applyPluginsAsyncSeries (F:GithubProgramMy-testWebpackwww2node_modules_tapable@0.2.6@tapablelibTapable.js:131:46)
at sealPart2 (F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompilation.js:631:9)
at Compilation.applyPluginsAsyncSeries (F:GithubProgramMy-testWebpackwww2node_modules_tapable@0.2.6@tapablelibTapable.js:131:46)
at Compilation.seal (F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompilation.js:579:8)
at F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompiler.js:493:16
at F:GithubProgramMy-testWebpackwww2node_modules_tapable@0.2.6@tapablelibTapable.js:225:11
at _addModuleChain (F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompilation.js:481:11)
at processModuleDependencies.err (F:GithubProgramMy-testWebpackwww2node_modules_webpack@2.5.1@webpacklibCompilation.js:452:13)
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)

webpack 配置可能会给你一些帮助:

module.exports = {
    entry: {
        app: path.resolve(APP, 'index.js'),
        vendors: ['jquery', 'moment']
    },
    output: {
        path: BUILD,
        filename: 'bundle.js'
    },
    plugins: [
        new HTMLwebpackPlugin({
            title: 'Generate by webpack'
        }),
        new webpack.optimize.CommonsChunkPlugin({
            name: 'vendors',
            filename: 'vendors.js'
        }),
        new UglifyJSPlugin({
            compress: true
        })
    ],
    module: {
        loaders: [
            {
                test: /.scss$/,
                loaders: 'style-loader!css-loader?sourceMap!sass-loader?sourceMap',
                include: APP 
            },
            {
                test: /.(jpg|png)$/,
                loaders: 'url-loader?limit=40000'
            },
            {
                test: /.jsx?$/, 
                loader: 'babel-loader',
                include: APP,
                query: {
                    presets: ['es2015', {"modules": false}]
                }
            }
        ]
    },
    devtool: 'eval-source-map'
}

"重置"是什么意思?我在任何地方都找不到答案...谢谢!

编辑 2017 年 8 月:现在uglifyjs-webpack-plugin可以与uglify-js@3一起使用

安装插件:npm install uglifyjs-webpack-plugin --save-dev,然后,在 webpack 配置中:

var UglifyJSPlugin = require('uglifyjs-webpack-plugin')
...
plugins: [
    new UglifyJSPlugin()
]

我有用:

  npm install uglifyjs-webpack-plugin --save-dev
 plugins: [
    new webpack.optimize.UglifyJsPlugin()
]

但这不是工作:

  new UglifyJSPlugin({
        compress: true
    })

同样的问题在Github,答案是:

当前使用 UglifyJS 3 会破坏插件。它有一个新的API,因此插件必须相应地更改。

我这样做只是为了解决它:

npm install --save-dev uglify-js@2

你必须确保你使用的是丑陋2而不是3。
我的配置如下所示:

const webpack = require('webpack');
module.exports = {
    ...
    plugins: [
        new webpack.optimize.UglifyJsPlugin()
    ]
};

它与 webpack3 + angular4 一起工作只需使用 npm install uglify-js@2.8.27 --save-dev

2017-07-26

我通过以下方式解决了这个问题:

npm i -D uglifyjs-webpack-plugin@1.0.0-beta.2

原因:uglifyjs-webpack-plugin@0.4.xwebpack 使用的版本,不支持 uglify-js 3。从uglifyjs-webpack-plugin@1.0.0-beta开始,它开始支持uglify-js 3。

参考:

  1. https://github.com/webpack-contrib/uglifyjs-webpack-plugin/issues/32
  2. https://github.com/webpack-contrib/uglifyjs-webpack-plugin/pull/63

最新更新