You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常项目部署服务器执行npm run build时UglifyJs报错

解决UglifyJs编译报错:Unexpected token: punc (()

嘿,这个坑我之前刚踩过!你遇到的ERROR in build.js from UglifyJs Unexpected token: punc (()问题,核心原因是旧版UglifyJs不支持ES6语法——比如你代码里的箭头函数() => {},本地开发正常是因为dev环境下Webpack已经通过Babel转译了ES6,但生产构建时没做对应的转译处理,导致UglifyJs在压缩时识别不了新语法。

下面是具体的解决步骤:

1. 确保Babel转译配置到位

首先检查项目是否安装了Babel相关依赖,如果没有,先安装:

npm install babel-loader @babel/core @babel/preset-env --save-dev

然后在你的Webpack配置文件(也就是你提到的urlMixin.js)里,添加对JS文件的转译规则:

let path = require('path');
let webpack = require('webpack');
// 如果用Terser的话需要引入
// const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  },
  // 添加这部分module规则
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/, // 排除node_modules里的文件
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'] // 把ES6转成ES5
          }
        }
      }
    ]
  },
  // 可选:如果用Webpack4+,替换UglifyJs为Terser
  /*
  optimization: {
    minimizer: [new TerserPlugin()]
  }
  */
}

2. 替换UglifyJs为Terser(推荐)

Webpack 4及以上版本已经默认用terser-webpack-plugin代替了旧版UglifyJs,它原生支持ES6语法压缩,不用额外转译也能处理。如果你的项目还在使用旧版UglifyJsPlugin,直接替换:

npm install terser-webpack-plugin --save-dev

然后在Webpack配置里修改优化项(就是上面注释的那部分),去掉原来的UglifyJsPlugin配置,换成Terser。

3. 检查Node/NPM版本一致性

另外别忘了确认本地和服务器的Node.js、NPM版本是否一致——版本差异有时候也会导致构建时的语法兼容问题,尽量保持环境一致。

做完这些配置后,再重新运行npm run build,应该就能顺利完成构建了!

内容的提问来源于stack exchange,提问作者CoderPJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:12:08