webpack打包出错

在使用webpack2.x打包时,出现下面报错(Unexpected token name «i», expected punc «;»):

ERROR in app.js from UglifyJs
Unexpected token name «i», expected punc «;» [app.js:9461,13]

定位到的报错是:

function oneOf (value, validList) {
    for (let i = 0; i < validList.length; i++) {//此行报错
        if (value === validList[i]) {
            return true;
        }
    }
    return false;
}

看样子是UglifyJs压缩插件在遇到es6语法时出错了。但是项目中自己写的代码是有用babel编译的,上面报错的代码应该是来自vue的库。为什么这些代码没有经过babel编译后才执行UglifyJs压缩呢?

阅读 8.2k
4 个回答

也遇到这个问题,问题链接
解决方法:

//webpack.bae.conf.js
{
   test: /iview.src.*?js$/,
   loader: 'babel-loader'
}

踩了一天这个坑,终于跳出来了,根据自己的webpack.base.config.js所在的目录,打包的时候相应的include需要babel的路径,路径一定要正确,且include 和 exclude不能共用,或者说不能同时作用于同一个目录吧。
按正常的逻辑。node_modules 里的文件应该不包含es6的代码才对
{

test: /\.js$/,
loader: 'happypack/loader?id=happybabel',
include: [resolve('../build'), resolve('../src'), resolve('../node_modules/iview/src'), resolve('../node_modules/iview/dist')]

}

这是 iView 里的代码。webpack 配置的 babel 是否忽略了 iView 目录,因为是在 node_modules 里。正确的配置详见 https://github.com/iview/ivie...

你的node版本是多少?node -V看一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题