vue 项目npm run build 报错ERROR in .js from UglifyJs Unexpected token: punc ())

在使用cnpm下载项目依赖时遇到多个提示'deprecated'的错误,导致npm run build失败。错误详细信息包括.js文件在压缩时遇到意外的token错误,以及子进程extract-text-webpack-plugin的失败。这可能是由于过时的包或者webpack配置问题导致。解决方法可能涉及更新依赖、修复webpack配置或调整构建流程。

最近用cnpm 下载项目依赖插件是,多个依赖提示 “deprecated”

npm install 因为有多个依赖提示 “deprecated”,不知道是怎么回事?

在这里插入图片描述

项目npm run build失败,报错。。。。

ERROR in .js from UglifyJs Unexpected token: punc ()) [10.2d7028889bc63f1c3a27.chunk.1612515204492.js:150,203] Child extract-text-webpack-plugin:

有大佬知道不?

<think>好的,我现在需要解决用户在构建Vue项目时遇到的UglifyJs处理vue-demi出现的Unexpected token错误。首先,我得回顾一下用户提供的引用内容,看看有没有相关的解决方案。 根据引用3和引用5,问题通常是因为某些依赖没有被Babel正确转译,导致UglifyJs无法处理ES6+语法。UglifyJs本身不支持ES6,所以需要先用Babel将代码转成ES5。用户提到vue-demi可能位于node_modules里,而默认情况下,Babel不会处理node_modules中的文件,所以需要显式包含这些依赖。 接下来,检查webpack配置,确保在babel-loader的include中包含vue-demi的路径。引用4中提到需要将element-ui的路径添加到include中,类似的,这里应该添加vue-demi的路径。可能需要修改webpack.base.conf.js中的babel-loader配置,把resolve('node_modules/vue-demi')加进去。 另外,引用3指出需要正确的Babel配置,比如使用@babel/preset-env和stage-3预设。确保项目中有.babelrc或babel.config.js文件,并正确配置presets,特别是处理ES6模块的转换。如果之前没有配置,添加这些预设可能会有帮助。 还有可能,用户使用的UglifyJs版本过旧,可以考虑改用terser-webpack-plugin,它支持ES6+代码的压缩。这在较新的Vue CLI项目中可能是默认的,但如果是旧项目可能需要手动替换。引用5提到修改构建配置,可能包括更新压缩工具。 最后,确认vue-demi的版本是否兼容当前的构建环境。有时候依赖库的更新可能修复了这类语法问题,升级到最新版本可能会有帮助。 总结步骤:1. 修改Babel配置包含vue-demi;2. 确保Babel预设正确;3. 更新压缩工具到terser;4. 检查依赖版本。需要逐步测试这些方法,找出具体原因。</think>### 解决UglifyJs处理vue-demi时出现Unexpected token错误的方法 #### 问题原因分析 该错误通常是由于以下原因导致: 1. **ES6+语法未被正确转译**:UglifyJs仅支持ES5语法,若`vue-demi`或相关依赖包含ES6+语法(如箭头函数、模板字符串等),未被Babel处理时会报错[^3][^5]。 2. **依赖未包含在Babel转译范围**:默认情况下,`babel-loader`会忽略`node_modules`中的文件。若`vue-demi`未被显式包含在转译路径中,其ES6+语法会直接传递给UglifyJs引发错误[^4]。 --- #### 解决方案步骤 1. **修改Babel配置** - 确保项目根目录存在`.babelrc`或`babel.config.js`文件,并配置`@babel/preset-env`: ```json // .babelrc示例 { "presets": [ ["@babel/preset-env", { "modules": false }] ] } ``` 或 ```javascript // babel.config.js示例 module.exports = { presets: [['@babel/preset-env', { modules: false }]] }; ``` 此配置会将ES6+语法转换为ES5。 2. **调整Webpack的babel-loader配置** - 在`webpack.base.conf.js`中,显式将`vue-demi`加入`babel-loader`的`include`路径: ```javascript // webpack.base.conf.js module.exports = { module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ resolve('src'), resolve('test'), resolve('node_modules/vue-demi') // 关键:包含vue-demi路径 ] } ] } } ``` 通过此配置强制Babel处理`vue-demi`的代码[^4]。 3. **替换压缩工具为terser-webpack-plugin** - 若项目使用Webpack 4+,建议使用`terser-webpack-plugin`替代UglifyJs(支持ES6+): ```bash npm install terser-webpack-plugin --save-dev ``` 在`webpack.prod.conf.js`中添加配置: ```javascript const TerserPlugin = require('terser-webpack-plugin'); module.exports = { optimization: { minimizer: [new TerserPlugin()] } }; ``` 此方法无需转译即可直接处理ES6代码。 4. **检查依赖版本兼容性** - 升级`vue-demi`到最新版本: ```bash npm update vue-demi ``` 某些旧版本可能包含未被转译的语法,新版本可能已修复。 --- #### 验证流程 1. 清除缓存后重新构建: ```bash rm -rf node_modules/.cache npm run build ``` 2. 若仍报错,检查构建日志中具体报错文件路径,确认是否遗漏其他依赖路径。 --- ### 相关问题 1. 如何判断Webpack是否成功转译了`node_modules`中的代码? 2. `babel-loader`的`exclude`和`include`规则优先级是什么? 3. 使用`terser-webpack-plugin`时如何配置多进程压缩? [^1]: 解决vue-cli element-ui打包报错Unexpected token: punc (() : vue项目编译时报错Unexpected token: punc ()) UglifyJs报错 : vue 构建失败 --Unexpected token: punc (() : vue2.x 在引用插件时npm run build报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值