正在清除Webpack缓存

eimct9ow  于 2022-11-13  发布在  Webpack
关注(0)|答案(7)|浏览(618)

如何强制webpack清除其缓存?
我在threejswebpack上做了很多工作,不知什么原因,它在内存中有两个threejs的副本。错误如下:

此文件并不位于app文件夹的隐藏文件夹中,而是位于通过Chrome开发工具找到的webpacks内存中-即

那么,有没有办法强制webpack清除它的缓存呢?

mzaanser

mzaanser1#

您可以删除文件夹“node_modules/.cache”以强制Webpacker/Babel重建其缓存。

d7v8vwbk

d7v8vwbk2#

如果这对其他人有帮助,我有一个类似的案例,问题是在一个文件中,我的import语句的名称中有一个大写字母。

import {Person} from './model/Model';

请注意,我已经删除了文件./model/Model.js,但是仍然会因为导入而出现错误。

import {Person} from './model/model';

一切又都好了。

pvcm50d1

pvcm50d13#

Webpack 5该高速缓存存储到node_modules/.cache/webpack(使用npm时)或.yarn/.cache/webpack(使用Yarn Plug'n'Play API时)中,请参阅持久性缓存。
您可以通过在webpack config中设置cache: false来完全停用缓存。
如果您只是想删除您的缓存,那么请执行以下操作:
1.删除node_modules/.cache/webpack.yarn/.cache/webpack
1.重新启动Webpack构建(仅热重新加载是不够的,因为文件仍将缓存在内存中)
当使用webpackDevMiddleware时,.cache目录会在您第一次访问页面时创建。在删除.cache后,我不得不重新启动我的dev服务器,以查看在我的“node_modules”目录中更改文件的效果。

mkshixfv

mkshixfv4#

Webpack没有缓存,但浏览器有。Webpack编译生成的文件可以保持缓存,除非它们的内容发生了变化。在documentation上,他们解释说要解决这个问题,你可以在输出文件名中添加[contenthash]。
[contenthash]替换将基于资产的内容添加唯一哈希。当资产的内容更改时,[contenthash]也将更改。

module.exports = {
    output: {
        filename: '[name].[contenthash].js',
        path: path.resolve(__dirname, 'dist')
    }
};
  • 附言:我使用的是Webpack v4.30.0*

欲了解更多信息,请查看Webpack's guide for caching

waxmsbnn

waxmsbnn5#

正如警告所说,在忽略大小写时,目录中有两个three.js的副本,它们具有相同的有效名称:'three'与'THREE'是一样的。
如果它们是不同的,则重命名其中一个。或者,如果它们是同一个模块,则给予它们一个相同的小写名称。

ghhaqwfi

ghhaqwfi6#

你可以在webpack配置中设置cache: false。这对我在Next.js上是有效的。

dldeef67

dldeef677#

要强制清除浏览器中的缓存,可以使用javascript动态加载生成的js bundle文件,并在src属性中添加一个查询参数,然后在加载文件时调用一个函数来执行其他脚本:

<script type="text/javascript">
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.onload = function () {
        init(); // call other scripts when this file is fully loaded
    };
    script.src = 'dist/bundle.js?v='+Date.now();

    document.getElementsByTagName('body')[0].appendChild(script);
</script>

<script>
    function init(argument) {
        // other scripts
        console.log('dist/bundle.js is loaded from the server not from the cache')
    }
</script>

请参阅:在JS中动态加载JS

相关问题