清除Webpack缓存

时间:2016-11-22 13:00:06

标签: angular three.js webpack

如何强制webpack清除其缓存?

我正在与threejswebpack进行大量工作,出于某些原因,我不知道,它在内存中有两个threejs副本。这是错误:

enter image description here

此文件并非位于app文件夹中的隐藏文件夹中,而是位于通过Chrome Dev工具找到的网络包内存中 - 即

enter image description here

那么无论如何都要强制webpack清除它的缓存?

5 个答案:

答案 0 :(得分:3)

如果这有助于其他人,我有一个类似的情况,问题是在其中一个文件中我的import语句名称中有一个大写。例如,我有

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

请注意,我删除了./model/Model.js文件但由于导入仍然出现错误。只需将导入更改为

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

一切都很好。

答案 1 :(得分:1)

正如警告所说,当您忽略大写时,您在目录中有两个three.js副本具有相同的有效名称:'three'与'THREE'是相同的。

如果它们不同,则重命名其中一个。或者,如果它们是相同的模块,请给它们两个相同的名称,小写。

答案 2 :(得分:0)

Webpack不具有缓存,但浏览器具有。 Webpack编译生成的文件可以保留在高速缓存中,除非其内容已更改。他们在documentation上解释说,要解决此问题,您可以在输出文件名中添加[contenthash]。

  

[contenthash]替换将基于   资产的内容。当资产的内容更改时,[contenthash]   也会改变。

module.exports = {
    output: {
        filename: '[name].[contenthash].js',
        path: path.resolve(__dirname, 'dist')
    }
};

PS:我正在使用Webpack v4.30.0

有关更多信息,请结帐Webpack's guide for caching

答案 3 :(得分:0)

要强制清除浏览器中的缓存,您可以在src属性中使用带有查询参数的javascript动态加载生成的js捆绑包文件,然后在加载文件时调用函数以执行其他脚本:< / p>

<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>

请参阅:Dynamically load JS inside JS

答案 4 :(得分:0)

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