TypeError: The ‘compilation‘ argument must be an instance of Compilation
快应用出现 TypeError: The 'compilation' argument must be an instance of Compilation
一、前言
这个错误是使用webpack
编译时候出的问题,通过查阅网上资料无一解决,也无一说明问题原因。本文将自己发现的原因进行记录,并记录解决思路
二、问题原因
该问题出现的主要原因是依赖库和本地的webpack
不兼容导致的,因为需要使用webpack
去编译,所以报的错误不太明显,只能察觉出是编译问题。由于webpack4
和webpack5
有些差别,所以如果有的依赖是跟webpack4
配套使用的,但是项目环境是webpack5
。就会出现问题,或者其他情况,总之就是版本不匹配。如何查阅和webpack
版本匹配的依赖版本,暂时没有找到方式,能做的是都使用最新版本。
三、查找问题依赖
新建一个可以运行的项目,尽可能简单。确定当前的webpack
版本,然后逐步的将原有项目的依赖进行添加,直到出错的时候,然后查找该依赖最新版本,使用npm view <package> versions
进行查找。编译成功后,再次添加新的依赖,直到所有依赖全部添加,而且项目编译成功。然后将该环境替换旧项目的依赖。注意保持webpack
版本。
四、可能出现的问题
测试环境是使用的华为快应用开发工具,依赖管理使用的是npm
。这个环境会出现一个问题,就是依赖库只能升不能降,只能加,不能减,所以如果出现依赖减少,版本降低的情况,需要将项目的build
缓存,node_modules
文件夹、package-lock.json
删除,然后重新进行依赖下载,如果没有可视化工具,可以执行npm install
命令进行下载。下载完再进行编译。
在使用华为快应用开发工具时候,第一次编译有时候会出现语法不支持的情况,比如以下内容:
出现该问题时候,将项目build
缓存,node_modules
文件夹删掉,重新下载依赖,然后重新编译即可,多试两次,如果还是这样,那么就只能尝试解决该问题了。
更多推荐
所有评论(0)