热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webpack打包报错Unexpectedtoken:keyword«const»

报错信息

报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 Failed to compile with 1 errors                                                                            11:

 error



static/js/chunk-libs.da284d69.js from UglifyJs

Unexpected token: keyword «const» [static/js/chunk-libs.da284d69.js:4989,1]



Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\404.6f333d52.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\FlowDetail.f2b0b0d9.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\FlowList.999d5d0f.js": no such file  

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\app.af0bb2e0.js": no such file      

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\article.96768f78.js": no such file  

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\chunk-libs.da284d69.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\login.0deda68c.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\register.7c72f28e.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\register.7c72f28e.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\runtime.3e207d39.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\vendors~FlowDetail.1981273a.js": no such file

Error parsing bundle asset "C:\Users\WIN10\Desktop\erpv5mobile\dist\static\js\vendors~FlowList~article.7ae4e07d.js": no such file



No bundles were parsed. Analyzer will show only original module sizes from stats file.



Webpack Bundle Analyzer is started at http://127.0.0.1:8888

Use Ctrl+C to close it

 ERROR  Build failed with errors.

error Command failed with exit code 1.

info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


配置


vue.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
const path = require('path')

const CompressiOnWebpackPlugin= require('compression-webpack-plugin')

const UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin')

const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')

const port = process.env.port || process.env.npm_config_port || 8888

const cdnDomian = './' // cdn域名,如果有cdn修改成对应的cdn

const name = 'H5Vue' // page title

const IS_PRODUCTION = process.env.NODE_ENV === 'production'

const cdn = {

  css: [],

  js: [

    'https://cdn.bootcss.com/vue/2.6.10/vue.min.js',

    'https://cdn.bootcss.com/vue-router/3.0.3/vue-router.min.js',

    'https://cdn.bootcss.com/vuex/3.1.0/vuex.min.js',

    'https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js',

    'https://cdn.bootcss.com/js-COOKIE/2.2.1/js.COOKIE.min.js'

  ]

}



const externals = {

  vue: 'Vue',

  'vue-router': 'VueRouter',

  vuex: 'Vuex',

  axios: 'axios',

  'js-COOKIE': 'COOKIEs'

}



function resolve(dir) {

  return path.join(__dirname, dir)

}



module.exports = {

  publicPath: IS_PRODUCTION ? cdnDomian : './',

  outputDir: 'dist',

  assetsDir: 'static',

  lintOnSave: process.env.NODE_ENV === 'development',

  productionSourceMap: false,

  devServer: {

    port: port,

    open: true,

    overlay: {

      warnings: false,

      errors: true

    },

    proxy: {

      // change xxx-api/login => mock/login

      // detail: https://cli.vuejs.org/config/#devserver-proxy

      [process.env.VUE_APP_BASE_API]: {

        target: `http://127.0.0.1:${port}/mock`,

        changeOrigin: true,

        pathRewrite: {

          ['^' + process.env.VUE_APP_BASE_API]: ''

        }

      }

    },

    after: require('./mock/mock-server.js')

  },

  configureWebpack: {

    // provide the app's title in webpack's name field, so that

    // it can be accessed in index.html to inject the correct title.

    name: name,

    resolve: {

      alias: {

        '@': resolve('src'), // 主目录

        'views': resolve('src/views'), // 页面

        'components': resolve('src/components'), // 组件

        'api': resolve('src/api'), // 接口

        'utils': resolve('src/utils'), // 通用功能

        'assets': resolve('src/assets'), // 静态资源

        'style': resolve('src/style') // 通用样式

      }

    }

  },

  chainWebpack(config) {

    config.plugins.delete('preload') // TODO: need test

    config.plugins.delete('prefetch') // TODO: need test



    // set svg-sprite-loader

    config.module

      .rule('svg')

      .exclude.add(resolve('src/icons'))

      .end()

    config.module

      .rule('icons')

      .test(/\.svg$/)

      .include.add(resolve('src/icons'))

      .end()

      .use('svg-sprite-loader')

      .loader('svg-sprite-loader')

      .options({

        symbolId: 'icon-[name]'

      })

      .end()



    // set preserveWhitespace

    config.module

      .rule('vue')

      .use('vue-loader')

      .loader('vue-loader')

      .tap(optiOns=> {

        options.compilerOptions.preserveWhitespace = true

        return options

      })

      .end()



    config

    // https://webpack.js.org/configuration/devtool/#development

      .when(process.env.NODE_ENV === 'development',

        cOnfig=> config.devtool('cheap-source-map')

      )



    config

      .when(process.env.NODE_ENV !== 'development',

        cOnfig=> {

          config

            .plugin('ScriptExtHtmlWebpackPlugin')

            .after('html')

            .use('script-ext-html-webpack-plugin', [{

            // `runtime` must same as runtimeChunk name. default is `runtime`

              inline: /runtime\..*\.js$/

            }])

            .end()

          config

            .optimization.splitChunks({

              chunks: 'all',

              cacheGroups: {

                libs: {

                  name: 'chunk-libs',

                  test: /[\\/]node_modules[\\/]/,

                  priority: 10,

                  chunks: 'initial' // only package third parties that are initially dependent

                },

                commons: {

                  name: 'chunk-commons',

                  test: resolve('src/components'), // can customize your rules

                  minChunks: 3, //  minimum common number

                  priority: 5,

                  reuseExistingChunk: true

                }

              }

            })

          config.optimization.runtimeChunk('single')

        }

      )

    if (IS_PRODUCTION) {

      config.plugin('analyzer').use(BundleAnalyzerPlugin)

      config.plugin('html').tap(args => {

        args[0].cdn = cdn

        return args

      })

      config.externals(externals)

      config.plugin('html').tap(args => {

        args[0].minify.minifyCSS = true // 压缩html中的css

        return args

      })

      // gzip需要nginx进行配合

      config

        .plugin('compression')

        .use(CompressionWebpackPlugin)

        .tap(() => [

          {

            test: /\.js$|\.html$|\.css/, // 匹配文件名

            threshold: 10240, // 超过10k进行压缩

            deleteOriginalAssets: false // 是否删除源文件

          }

        ])

      config.optimization.minimizer([

        new UglifyjsWebpackPlugin({

          // 生产环境推荐关闭 sourcemap 防止源码泄漏

          // 服务端通过前端发送的行列,根据 sourcemap 转为源文件位置

          // sourceMap: true,

          uglifyOptions: {

            warnings: false,

            compress: {

              drop_console: true,

              drop_debugger: true

            }

          }

        })

      ])

    }

  },

  css: {

    // 是否使用css分离插件 ExtractTextPlugin

    extract: !!IS_PRODUCTION,

    // 开启 CSS source maps?

    sourceMap: false,

    // css预设器配置项

    // 启用 CSS modules for all css / pre-processor files.

    modules: false,

    loaderOptions: {

      sass: {

        data: '@import "style/_mixin.scss";@import "style/_variables.scss";@import "style/common.scss";' // 全局引入

      }

    }

  }

}


package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{

  "name": "vue-cli-h5",

  "version": "0.1.0",

  "private": true,

  "scripts": {

    "serve": "vue-cli-service serve",

    "dev": "vue-cli-service serve --mode development",

    "build": "vue-cli-service build",

    "lint": "vue-cli-service lint",

    "svgo": "svgo -f src/icons/svg --cOnfig=src/icons/svgo.yml"

  },

  "dependencies": {

    "ant-design-vue": "^1.4.4",

    "axios": "^0.19.0",

    "core-js": "2.6.5",

    "dayjs": "^1.8.16",

    "fastclick": "^1.0.6",

    "js-COOKIE": "^2.2.1",

    "lib-flexible": "^0.3.2",

    "moment": "^2.24.0",

    "socket.io-client": "^2.3.0",

    "vant": "^2.2.5",

    "vo-pages": "^1.0.8",

    "vue": "^2.6.10",

    "vue-ls": "^3.2.1",

    "vue-router": "^3.0.3",

    "vuex": "3.1.0"

  },

  "devDependencies": {

    "@babel/register": "^7.6.2",

    "@vue/cli-plugin-babel": "^3.11.0",

    "@vue/cli-plugin-eslint": "^3.11.0",

    "@vue/cli-service": "^3.11.0",

    "@vue/eslint-config-standard": "^4.0.0",

    "amfe-flexible": "^2.2.1",

    "babel-eslint": "^10.0.1",

    "babel-plugin-import": "^1.12.2",

    "body-parser": "^1.19.0",

    "chalk": "^2.4.2",

    "chokidar": "^3.2.1",

    "compression-webpack-plugin": "^3.0.0",

    "eslint": "^5.16.0",

    "eslint-plugin-vue": "^5.0.0",

    "mockjs": "^1.0.1-beta3",

    "postcss-pxtorem": "^4.0.1",

    "sass": "^1.18.0",

    "sass-loader": "^7.1.0",

    "script-ext-html-webpack-plugin": "^2.1.4",

    "svg-sprite-loader": "^4.1.6",

    "svgo": "^1.3.0",

    "uglifyjs-webpack-plugin": "^2.2.0",

    "vconsole": "^3.3.4",

    "vue-template-compiler": "^2.6.10",

    "webpack-bundle-analyzer": "^3.5.2"

  }

}


babel.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module.exports = {

  presets: ['@vue/app'],

  plugins: [

    [

      'import',

      {

        libraryName: 'vant',

        libraryDirectory: 'es',

        style: true

      },

      'vant'

    ],

    ['import', {

      libraryName: 'ant-design-vue',

      libraryDirectory: 'es',

      style: 'css' }] // `style: true` 会加载 less 文件

  ]

}

/*

'postcss-pxtorem': {

      rootValue: 37.5,

      propList: ['*']

    } */



推荐阅读
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 简述在某个项目中需要分析PHP代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑ÿ ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
author-avatar
哈喽随风amy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有