首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack 4.1.1和UglifyJS2 -生产模式错误抛出错误的代码

Webpack 4.1.1和UglifyJS2 -生产模式错误抛出错误的代码
EN

Stack Overflow用户
提问于 2018-03-15 01:20:10
回答 1查看 268关注 0票数 0

我已经将一个项目升级到Webpack 4.1.1,并且遇到了一个UglifyJS的错误,我似乎找不到它。

最小可重现性回购:https://github.com/jamesopti/uglifyjs-webpack-issue

虽然我认为这是一个bug,但我想尝试配置UglifyJS来解决它。到目前为止还没有运气,尽管有以下选项。

代码语言:javascript
复制
uglifyOptions: {
  mangle: false,
  keep_classnames: true,
  keep_fnames: true,
},

有什么想法吗?

Main.js代码:

代码语言:javascript
复制
import React from 'react';

import { render } from 'react-dom';
import ReactCodeMirror from 'react-codemirror';

// Enables syntax highlighting for javascript
require('codemirror/mode/javascript/javascript');
// Enables linting for javascript
require('codemirror/addon/lint/lint');
require('codemirror/addon/lint/javascript-lint');

window.JSHINT = require('jshint').JSHINT;

const defaultOptions = {
  lint: true,
};

render(
  <ReactCodeMirror
    options={defaultOptions}
    value={'some\ncode'}
  />, document.querySelector('#root')
);

Webpack配置:

代码语言:javascript
复制
  entry: './src/main.js',

  mode: 'development',

  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },

  module: {
    rules: [
      { test: /\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' } ] },
      { test: [/\/src\/(?:.*)\.js$/], use: { loader: 'babel-loader' } },
    ]
  },

  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        cache: true,
        parallel: true,
        uglifyOptions: {
          mangle: false,
          keep_classnames: true,
          keep_fnames: true,
        },
      }),
    ]
  }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 03:54:13

造成这种情况的根本原因是UglifyJS中的一个bug (报告的这里)。

最小可复制代码:

代码语言:javascript
复制
(function(mod) {
  mod();
})(function() {
  function getMaxSeverity(ax, bx) {
    if (ax === "error") {
      return ax;
    } else {
      return bx;
    }
  }
  function main() {
    var arr = ['hey'];
    for (var i = 0; i < arr.length; i++) {
      console.log(getMaxSeverity('one', 'two'));
    }
  }
  main();
});

解决方法是压缩内联选项。

代码语言:javascript
复制
optimization: {
  minimizer: [
    new UglifyJsPlugin({
      uglifyOptions: {
        compress: {
          inline: 1,
        }
      }
    })
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49290104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档