Vue打包后chunk-vendors.92223bd2.js文件过大解决方案

文章讲述了在SpringBoot和Vue构建的系统中遇到的页面加载速度慢的问题,主要是由于一个2.6M的js文件导致。作者提出了一个免费的解决方案,通过使用compression-webpack-plugin插件配合webpack进行js文件的gzip压缩,并在nginx配置中启用gzip压缩,显著提高了页面加载速度。
唠嗑部分

事情的经过是这样的,最近自己玩了一个小系统,使用的是SpringBoot+Vue编写,打包部署后发现页面加载缓慢,打开控制台一看,发现是这家伙在作祟,请看下图

image-20230528084549523

什么鬼,这个js文件2.6M,花费6s,很多小伙伴本地开发的时候,根本不会出现这种问题,只有部署后才会出现,云服务器配置:2核2G4Mbps(没钱租好的),总之开发一个好的系统考虑的因素有很多,网络带宽也是必不可少的因素

下面我们来说一说免费的解决方案

言归正传

1、安装插件

yarn add compression-webpack-plugin@6.1.1 --save-dev

2、在vue.config.js配置如下

...
module.exports = defineConfig({
    ...
    configureWebpack: {
        ...
        plugins: process.env.NODE_ENV === 'production' ? [
            new CompressionWebpackPlugin({
                algorithm: 'gzip',
                test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
                threshold: 10240,
                minRatio: 0.8
            })
        ] : []
    },
})

3、运行打包命令

npm run build

打包后打开js目录发现有很多.gz结尾的文件

image-20230528102650480

4、上传&修改nginx配置文件,添加如下配置

http {
    ...
    #gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。
    gzip  on;                     #开启gzip
    gzip_min_length  1k;          #最小压缩大小
    gzip_buffers     4 16k;       #压缩缓冲区
    #gzip_http_version 1.0;        #压缩版本
    gzip_comp_level 9;            #压缩等级
    gzip_types   text/plain application/x-javascript text/css application/xml application/javascript text/javascript application/x-httpd-php image/jpeg image/gif image/png;  #压缩类型
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    
    ...
}

解释一下:

第1行:开启Gzip

第2行:不压缩临界值,大于1K的才压缩,一般不用改

第3行:buffer,就是,嗯,算了不解释了,不用改

第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1

第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧

第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了

第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧

第8行:IE6对Gzip不怎么友好,不给它Gzip了

注意:js文件类型对应application/javascript,如果不加会不生效(小白亲踩坑)

5、重启nginx

docker restart nginx

6、测试,这个耗时看着舒服多了,页面加载也快了好多

image-20230528101402286

结语

1、以上就是我们今天分享的内容。

2、制作不易,一键三连再走吧,您的支持永远是我最大的动力!

chunk-vendors.js:13463 [HMR] Waiting for update signal from WDS... main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/areaChart.vue?vue&type=script&lang=js:199 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:28 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/barChart.vue?vue&type=script&lang=js:189 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:48 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/pieChart03.vue?vue&type=script&lang=js:21 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:109 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/areaChart.vue?vue&type=script&lang=js:22 报警信息此时: {__ob__: Observer} cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/barChart.vue?vue&type=script&lang=js:22 报警信息此时: {__ob__: Observer} main.js:26 加载 3D 模型失败: SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON at JSON.parse (<anonymous>) at GLTFLoader.parse (GLTFLoader.js:387:17) at Object.eval [as onLoad] (GLTFLoader.js:249:11) at eval (three.core.js:44796:38) eval @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:132 _onError @ GLTFLoader.js:225 eval @ GLTFLoader.js:259 eval @ three.core.js:44796 Promise.then load @ three.core.js:44784 load @ GLTFLoader.js:245 initThreeModel @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:121 eval @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:153 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 Vue.$nextTick @ vue.runtime.esm.js:2718 mounted @ iview.js:20290 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997
最新发布
11-11
test_how_to_buy.py::TestHowToBuyBuilder::test_get_p2p_page FAILED [100%] AssertionError: 响应内容中未找到'P2P'关键字 P2P' in '<!DOCTYPE html><html translate=no lang=en><head><meta charset=UTF-8><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\'gtm.start\': new Date().getTime(),event:\'gtm.js\'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';j.async=true;j.src= \'https://www.googletagmanager.com/gtm.js?id=\'+i+dl;f.parentNode.insertBefore(j,f); })(window,document,\'script\',\'dataLayer\',\'GTM-PM7K2HH2\');</script><script src=https://web.webstatic.cc/sensorsdata.min.js></script><meta name=renderer content=webkit><meta http-equiv=X-UA-Compatible content="IE=edge"><meta content=yes name=apple-mobile-web-app-capable><meta content=yes name=apple-touch-fullscreen><meta content="telephone=no" name=format-detection><meta content=black name=apple-mobile-web-app-status-bar-style><meta name=viewport content="minimal-ui,width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>JuCoin</title><meta name=google-site-verification content=XNK7qkbdXlGZC5qdscfsn3btNpWGvXYxRUOAz4kKmt0><meta name=yandex-verification content=ecd9a602bed59339><link rel=stylesheet type=text/css href=https://at.alicdn.com/t/font_2502537_ytndssfkiy.css><script src=//web-test.jcwork.net/common/libs/vue@2.6.12.vue-router@3.5.1.vuex@3.6.2.min.js></script><link href=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.04f8bd3df0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.0d36cfb318.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.f2aa17ba00.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.74d49d5ad6.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.aad22a0112.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.b2931283ae.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.df1b87764e.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.d7e11400c0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~db300d2f.5c0e563e8d.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/runtime.92f87a5477.js rel=modulepreload as=script></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PM7K2HH2" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><div id=app></div><script src=/js/iconpark.js></script><script>var isInApp = navigator.userAgent.indexOf(\'ju/\') > -1; if (!isInApp) { var script = document.createElement(\'script\'); script.id = \'ze-snippet\'; script.src = "https://static.zdassets.com/ekr/snippet.js?key=707ff1c5-ee52-41ea-bf75-124f94056064"; document.body.appendChild(script); }</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-ECW5SYQQJF"></script><script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag(\'js\', new Date()); gtag(\'config\', \'G-ECW5SYQQJF\');</script><script type=module src=//web-test.jcwork.net/web/order/assets/js/runtime.92f87a5477.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.0d36cfb318.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.df1b87764e.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.aad22a0112.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.74d49d5ad6.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.f2aa17ba00.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.d7e11400c0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~db300d2f.5c0e563e8d.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.b2931283ae.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.04f8bd3df0.js></script><script>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.targe != =t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script src=//web-test.jcwork.net/web/order/assets/js/runtime.ff5150786c.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.6b7bef194f.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.044f32af3e.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.2a7eaabaa0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.b9fcb6db08.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.38608570f1.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.0a4168faf6.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.5c144a50c2.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.e5e0e373f8.js nomodule></script></body></html>' <点击查看差异> test_how_to_buy.py:647: in test_get_p2p_page assert "P2P" in response_text, "响应内容中未找到'P2P'关键字" E AssertionError: 响应内容中未找到'P2P'关键字 E assert 'P2P' in '<!DOCTYPE html><html translate=no lang=en><head><meta charset=UTF-8><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\'gtm.start\':\n new Date().getTime(),event:\'gtm.js\'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';j.async=true;j.src=\n \'https://www.googletagmanager.com/gtm.js?id=\'+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,\'script\',\'dataLayer\',\'GTM-PM7K2HH2\');</script><script src=https://web.webstatic.cc/sensorsdata.min.js></script><meta name=renderer content=webkit><meta http-equiv=X-UA-Compatible content="IE=edge"><meta content=yes name=apple-mobile-web-app-capable><meta content=yes name=apple-touch-fullscreen><meta content="telephone=no" name=format-detection><meta content=black name=apple-mobile-web-app-status-bar-style><meta name=viewport content="minimal-ui,width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>JuCoin</title><meta name=google-site-verification content=XNK7qkbdXlGZC5qdscfsn3btNpWGvXYxRUOAz4kKmt0><meta name=yandex-verification content=ecd9a602bed59339><link rel=stylesheet type=text/css href=https://at.alicdn.com/t/font_2502537_ytndssfkiy.css><script src=//web-test.jcwork.net/common/libs/vue@2.6.12.vue-router@3.5.1.vuex@3.6.2.min.js></script><link href=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.04f8bd3df0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.0d36cfb318.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.f2aa17ba00.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.74d49d5ad6.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.aad22a0112.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.b2931283ae.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.df1b87764e.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.d7e11400c0.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~db300d2f.5c0e563e8d.js rel=modulepreload as=script><link href=//web-test.jcwork.net/web/order/assets/js/runtime.92f87a5477.js rel=modulepreload as=script></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PM7K2HH2" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><div id=app></div><script src=/js/iconpark.js></script><script>var isInApp = navigator.userAgent.indexOf(\'ju/\') > -1;\n if (!isInApp) {\n var script = document.createElement(\'script\');\n script.id = \'ze-snippet\';\n script.src = "https://static.zdassets.com/ekr/snippet.js?key=707ff1c5-ee52-41ea-bf75-124f94056064";\n document.body.appendChild(script);\n }</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-ECW5SYQQJF"></script><script>window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag(\'js\', new Date());\n gtag(\'config\', \'G-ECW5SYQQJF\');</script><script type=module src=//web-test.jcwork.net/web/order/assets/js/runtime.92f87a5477.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.0d36cfb318.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.df1b87764e.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.aad22a0112.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.74d49d5ad6.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.f2aa17ba00.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.d7e11400c0.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~db300d2f.5c0e563e8d.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.b2931283ae.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js></script><script type=module src=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.04f8bd3df0.js></script><script>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script src=//web-test.jcwork.net/web/order/assets/js/runtime.ff5150786c.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~6e8b5f81.6b7bef194f.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~2a42e354.5037ca7918.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7529033b.3ac50c68e0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~ac50015d.044f32af3e.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~921ad15b.2a7eaabaa0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~731d2fff.b9fcb6db08.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~301ae65c.43bdc9e3e0.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~002b9c58.ec13308e9b.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~544a4ec4.7f0a6c7ca6.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~7274e1de.38608570f1.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~d939e436.0a4168faf6.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~690b702c.b617a7a669.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~9c5b28f6.5c144a50c2.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/chunk-vendors~678f84af.179bd77cc9.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/app~e2e93592.a2d6deab71.js nomodule></script><script src=//web-test.jcwork.net/web/order/assets/js/app~3d9b8e9e.e5e0e373f8.js nomodule></script></body></html>' 断言失败 断言失败 断言失败 以上是上个问题答案中的P2P接口测试用例脚本跑完后报错的内容,请做对应的修改
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小白.

感谢老板,祝老板今年发大财!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值