2

在我的项目中,我使用 Webpacks HMR 功能来动态导入和呈现 React App 组件,以应对一直有效的新变化。但是,我有另一个文件,我在其中存储了一个 Redux 减速器和一个相应的module.hot.accept调用,该调用永远只被调用一次。我剥离了几乎所有的依赖项,甚至删除了 Redux 并将其追溯到 Webpack 本身。

我的App.Store.ts基本上是这样的:

// tslint:disable-next-line:missing-jsdoc
import { AppReducer } from "App.Reducer";
import { createStore, Store } from "redux";

function configureStore(): Store {
    const store: Store = createStore(AppReducer);

    if (module.hot) {
        module.hot.accept(
            "App.Reducer",
            (): void => {
                // tslint:disable-next-line:no-console
                console.log("This is only called once and not a second time :(");
            }
        );
    }

    return store;
}

export default configureStore;

当我在我的App.Reducer.ts(无论如何)中更改某些内容时,处理程序只会被调用一次。在文件的后续更改中,调试输出console.log根本不可见。

这要么是一个更复杂的 Webpack HMR 问题,要么是我对 HMR 的处理有module.hot.accept误。有关详细信息,请参阅我链接的 MWE。

MWE

可以在此处找到完整的 MWE:https ://gitlab.com/NearAutomata/webpack-hmr-issue 。克隆并运行以下命令:

yarn
yarn run build-main
yarn run build-renderer-hot

在第二次终端运行中

yarn run start-hot
4

0 回答 0