码迷,mamicode.com
首页 > Web开发 > 详细

记一次webpack打包的问题

时间:2019-11-16 12:50:25      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:rod   ted   man   webpack   gui   开始   uid   mat   module   

记一次webpack打包的问题

在webpack打包中开启了webpack-bundle-analyzer,发现了一个chunk:tinymce
技术图片?

在整个项目中查找,只有一个未被使用的组件中有如下代码:

import Tinymce from '@/components/Tinymce

删除Tinymce文件夹之后,项目出现了报错:

Can't resolve '@/components/Tinymce'

开始排查错误,然后开始在main.js 中逐步注释代码,终于到注释掉下面的代码的时候不再报错了

import router from "./router";

查找了一遍router下面的文件,没有一处引入,继续排查,当注释掉下面的代码的时候好了

const _import = require('./_import_' + process.env.NODE_ENV);

上面这行代码的主要功能是根据环境使用不同的引入,在dev环境不使用webpack的分割方案,生成环境分割路由:

// development
module.exports = file => require('@/views/' + file + '.vue').default
// production
module.exports = file => () => import('@/views/' + file + '.vue')

问题就出在这里的require和import,当引入的内容包含表达式的时候,webpack文档的解释:
A context is created if your request contains expressions, so the exact module is not known on compile time. context module is generated. It contains references to all modules in that directory that can be required with a request matching the regular expression.
也就是说"@/views/"下的所得vue文件(包含子目录)都被webpack的require了,因为views文件夹下包含一个components的文件夹,tinymce就在该文件下,也就被引入了。

那么到了这里,问题的解决方案就有了,就是单独使用一个pages的文件夹存放路由对应的所有页面。

现在看看使用的webpack版本,还是2.6.1,优点太落后了,该升级了。

记一次webpack打包的问题

标签:rod   ted   man   webpack   gui   开始   uid   mat   module   

原文地址:https://www.cnblogs.com/walkermag/p/ji-yi-ciwebpack-da-bao-de-wen-ti.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!