账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue-cli3 神奇的打包错误
    • 2020-01-01 00:00
    • 11
    31
    0

    前言

    今天上午我打包了一个Vue项目该项目基于 vue-cli3 创建,代码也写了不少了由于之前一直开发模式编写没有测试打包,结果编译的时候出现了问题.

    运行:

    npm run build

    控制台错误如下:

    > vue-cli-service build
    
    
    |  Building for production...
    
     ERROR  Failed to compile with 1 errors                                                                                                        21:03:31
     error 
    
    js/app.84ea6161.js from Terser
    Unexpected token operator «+», expected punc «,» [webpack/bootstrap:70,1249][js/app.84ea6161.js:71,1260]

    执行到这里报错后 vue-cli 就停止了运行, dist 目录下没有输出任何内容, 我无法判断代码哪里出现了问题.

    于是开始百度, 得到的答案是由于 UglifyJsPlugin 插件不支持 ES6 代码的压缩导致的错误, 解决思路就是查看项目依赖的模块中是否有某些模块使用了ES6编写, 找到这些模块然后配置 babel 来事先转译它们为ES5代码.

    不过我的项目中的依赖没有一个模块是ES6模块:

      "dependencies": {
        "axios": "^0.19.0",
        "element-ui": "^2.8.2",
        "humps": "^2.0.1",
        "normalize.css": "^8.0.1",
        "querystringify": "^2.1.1",
        "vue": "^2.6.10",
        "vue-router": "^3.0.6",
        "vuex": "^3.0.1"
      },

    而且我没有修改 vue-cli 的配置使用的就是默认的

    而且这些文章的时间都是在2017年使用的都不是 vue-cli3 . vue-cli 生成的项目都是基于 webpack 配置的和现在的 vue.config.js 不同.而且报错还不一样普遍报错的都是 UglifyJsPlugin 插件报错,例如:

    d.js from UglifyJs
    Unexpected token operator «=», expected punc «,» [./node_modules/quill-image-extend-module/index.js:12,0][build.js:76527,35]

    但是我报错的插件是 Terser , 于是我想把这个插件给禁用掉观察一下问题,我找到了 ./node_modules/@vue/cli-service/lib/config/prod.js 该文件中应该保存了生产环境的 webpack 配置,我将 Terser 给注释掉了.

    module.exports = (api, options) => {
      api.chainWebpack(webpackConfig => {
        if (process.env.NODE_ENV === 'production') {
          const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
          const getAssetPath = require('../util/getAssetPath')
          const filename = getAssetPath(
            options,
            `js/[name]${isLegacyBundle ? `-legacy` : ``}${options.filenameHashing ? '.[contenthash:8]' : ''}.js`
          )
    
          webpackConfig
            .mode('production')
            .devtool(options.productionSourceMap ? 'source-map' : false)
            .output
              .filename(filename)
              .chunkFilename(filename)
    
          // keep module.id stable when vendor modules does not change
          webpackConfig
            .plugin('hash-module-ids')
              .use(require('webpack/lib/HashedModuleIdsPlugin'), [{
                hashDigest: 'hex'
              }])
    
          if (process.env.VUE_CLI_TEST) {
            webpackConfig.optimization.minimize(false)
          } else {
            
            // const TerserPlugin = require('terser-webpack-plugin') // 将这里注释了
            // const terserOptions = require('./terserOptions')// 将这里注释了
            // webpackConfig.optimization.minimizer([// 将这里注释了
            //   new TerserPlugin(terserOptions(options))// 将这里注释了
            // ])
          }
        }
      })
    }

    喜闻乐见没有任何效果, 报错还是一样的.

    几近绝望的我开始修改 vue.config.js ,我随意将 filenameHashing 设置为了 false 原本想观察文件名称但是结果打包成功了, 现在我是彻底没有思路了, 望各位大佬赐教

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    • 君清邪 普通会员 1楼

      在使用vue-cli3打包项目时,可能会遇到一些奇怪的错误,这些错误可能会导致项目无法正常构建。以下是一些可能的错误及其解决方法:

      1. 未安装依赖:在vue-cli3中,如果你尝试构建项目,但没有安装必要的依赖,你可能会遇到这个问题。你可以在命令行中使用npm install或yarn add命令来安装依赖。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的依赖。

      2. 缺少插件:在vue-cli3中,你需要为你的项目安装一些插件才能正常运行。你可以使用npm install或yarn add命令来安装插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的插件。

      3. 代码格式化错误:如果你在使用vue-cli3构建项目时,发现代码格式化错误,你可能需要安装一些格式化插件。你可以使用npm install或yarn add命令来安装格式化插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的格式化插件。

      4. 缺少编译规则:如果你在使用vue-cli3构建项目时,发现缺少编译规则,你可能需要安装一些编译规则插件。你可以使用npm install或yarn add命令来安装编译规则插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的编译规则插件。

      5. 路径问题:如果你在使用vue-cli3构建项目时,发现路径问题,你可能需要调整项目路径。你可以使用npm config set path或yarn config set path命令来调整项目路径。

      6. 版本冲突:如果你在使用vue-cli3构建项目时,发现版本冲突,你可能需要解决版本冲突。你可以使用npm install --save-dev @vue/cli-plugin-node-resolve或yarn add --dev @vue/cli-plugin-node-resolve命令来解决版本冲突。

      以上是一些可能的错误及其解决方法,你可以根据自己的实际情况进行排查和解决。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部