#记一次打包报错

报错内容如下

js/app.6ff5e7c3.js from Terser
Unexpected token: keyword «const» [js/app.6ff5e7c3.js:1,4460]

error  

js/chunk-2c925c54.8731960b.js from Terser
Unexpected token: punc «(» [js/chunk-2c925c54.8731960b.js:1,1959]

error  

js/chunk-3a55163c.6c8c81ab.js from Terser
Unexpected token: operator «>» [js/chunk-3a55163c.6c8c81ab.js:1,5448]

error  

js/chunk-56fb77e9.eb13d476.js from Terser
Unexpected token: punc «(» [js/chunk-56fb77e9.eb13d476.js:1,1690]

在这里插入图片描述

解决方法

TerserPlugin的配置参入改成如下

const path = require('path')
const TerserPlugin = require('terser-webpack-plugin')

module.exports = {
  /**
   * Webpack 配置
   */
  configureWebpack: () => ({
    plugins: [],
    optimization: {
      minimizer: [
        new TerserPlugin({
          terserOptions: {
            ecma: undefined,
            parse: {},
            compress: {
              drop_console: true, // 传true就是⼲掉所有的console.*这些函数的调⽤.
              drop_debugger: true, // ⼲掉那些debugger;
              pure_funcs: ['console.log'] // 如果你要⼲掉特定的函数⽐如console.info ,⼜想删掉后保留其参数中的副作⽤,那⽤pure_funcs来处理
            },
            mangle: true, // Note `mangle.properties` is `false` by default.
            module: false,
            // Deprecated
            output: null,
            format: null,
            toplevel: false,
            nameCache: null,
            ie8: false,
            keep_classnames: undefined,
            keep_fnames: false,
            safari10: false
          }
        })
      ]
    }
  }),
}

原先报错的写法

const path = require('path')
const TerserPlugin = require('terser-webpack-plugin')

module.exports = {
  /**
   * Webpack 配置
   */
  configureWebpack: () => ({
    plugins: [],
    optimization: {
      minimizer: [
        new TerserPlugin({
          minify: (file, sourceMap) => {
            const uglifyJsOptions = {
              compress: {
                drop_console: true,
                drop_debugger: true
              }
            }
            if (sourceMap) {
              uglifyJsOptions.sourceMap = {
                content: sourceMap
              }
            }
            return require('uglify-js').minify(file, uglifyJsOptions)
          }
        })
      ]
    }
  }),
}

其他说明:

我的webpack是版本5(cmd执行webpack -v)
webpack: 5.72.1
terser-webpack-plugin官网:https://webpack.docschina.org/plugins/terser-webpack-plugin/

### 已知问题分析 在执行 `npm create vue@latest` 命令时,出现了语法错误 `SyntaxError: Unexpected token ?`[^1]。此问题可能源于命令解析器无法识别该特定语法结构,或者环境中存在不兼容的配置。 另外,在 CentOS 系统上尝试打包 Vue 应用程序时遇到了错误码 `errno 126`[^2]。这通常表示权限不足或文件路径存在问题。为了修复这一问题,建议清理项目依赖并重新安装。 最后提到更新 npm 库版本的需求,可以通过一些工具和方法来实现自动化管理[^3]。 --- ### 解决方案 #### 针对 SyntaxError 报错 如果运行 `npm create vue@latest` 出现语法错误,则可能是由于以下原因: - **Node.js 版本过低**:确保使用的 Node.js 是 LTS 或更高版本(推荐 v18.x)。可以使用以下命令检查当前版本: ```bash node -v ``` - 如果版本较低,请升级至最新稳定版: ```bash nvm install --lts nvm use --lts ``` - 另外,确认是否正确调用了 `npx` 而不是直接通过 `npm` 来创建新项目。实际应为: ```bash npx create-vue@latest my-app-name ``` 上述调整可有效规避潜在的语法冲突问题。 #### 处理 errno 126 的解决方案 对于服务器端发生的 `errno 126` 错误,按照如下流程操作即可解决问题: 1. 删除现有的 `node_modules` 文件夹以及锁定文件 `package-lock.json`: ```bash rm -rf node_modules package-lock.json ``` 2. 清除本地缓存数据以防残留旧版本模块干扰正常构建过程: ```bash npm cache clear --force ``` 3. 安装最新的依赖项集合: ```bash npm install ``` 4. 运行安全审计修正脚本来修补任何已知漏洞风险点: ```bash npm audit fix ``` 完成以上步骤后再次尝试部署应用应该能够成功避免之前提及过的错误情况发生。 #### 自动化维护 NPM 库版本策略 要让项目的依赖始终保持最新状态,有几种常用方式可供选择: - 使用 `ncu` (npm-check-updates) 插件扫描所有可用的新版本号,并一次性替换原清单中的定义值; ```bash npm i -g npm-check-updates ncu -u npm install ``` - 启用 Bit 平台支持跨框架组件共享功能的同时还能自动同步远程仓库里的变更录从而达到持续集成的目的; 无论是哪种途径都需谨慎评估每次改动带来的影响以免引入不必要的破坏性更改。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值