- 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 条
- 全部回答
-
君清邪 普通会员 1楼
在使用vue-cli3打包项目时,可能会遇到一些奇怪的错误,这些错误可能会导致项目无法正常构建。以下是一些可能的错误及其解决方法:
-
未安装依赖:在vue-cli3中,如果你尝试构建项目,但没有安装必要的依赖,你可能会遇到这个问题。你可以在命令行中使用
npm install或yarn add命令来安装依赖。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的依赖。 -
缺少插件:在vue-cli3中,你需要为你的项目安装一些插件才能正常运行。你可以使用
npm install或yarn add命令来安装插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的插件。 -
代码格式化错误:如果你在使用vue-cli3构建项目时,发现代码格式化错误,你可能需要安装一些格式化插件。你可以使用
npm install或yarn add命令来安装格式化插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的格式化插件。 -
缺少编译规则:如果你在使用vue-cli3构建项目时,发现缺少编译规则,你可能需要安装一些编译规则插件。你可以使用
npm install或yarn add命令来安装编译规则插件。如果你使用的是webpack,你可能需要在webpack配置文件中添加相关的编译规则插件。 -
路径问题:如果你在使用vue-cli3构建项目时,发现路径问题,你可能需要调整项目路径。你可以使用
npm config set path或yarn config set path命令来调整项目路径。 -
版本冲突:如果你在使用vue-cli3构建项目时,发现版本冲突,你可能需要解决版本冲突。你可以使用
npm install --save-dev @vue/cli-plugin-node-resolve或yarn add --dev @vue/cli-plugin-node-resolve命令来解决版本冲突。
以上是一些可能的错误及其解决方法,你可以根据自己的实际情况进行排查和解决。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

