HMR正在追加而不是替换

时间:2017-09-17 05:22:44

标签: angular webpack material-design webpack-hmr

这是我对页面的初始加载:

enter image description here

在改变一些文本后,HMR会被激活,但是追加 DOM而不是替换它:

enter image description here

是否有人知道可能导致此问题的原因? 控制台上没有错误。

更新

我在命令行中使用了 ASP.NET Core with Angular 模板。 此模板使用引导程序 jquery 。我想删除这两个组件,因此我想使用 material

1 个答案:

答案 0 :(得分:5)

我想我找到了答案:

我想在 boot.browser.ts 中摆脱 bootstrap jquery 。所以我删除了一些引用bootstrap的行:

import 'reflect-metadata';
import 'zone.js';
// removed this line
// import 'bootstrap';
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module.browser';

然后我在这个区块看到了错误:

if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => {
        // Before restarting the app, we create a new root element and dispose the old one
        const oldRootElem = document.querySelector('app');
        const newRootElem = document.createElement('app');
        oldRootElem!.parentNode!.insertBefore(newRootElem, oldRootElem);
        modulePromise.then(appModule => appModule.destroy());
    });
}

在评论这些行后,最终结果是:

import 'reflect-metadata';
import 'zone.js';
import 'bootstrap';
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module.browser';

if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => {
    });
} else {
    enableProdMode();
}

// Note: @ng-tools/webpack looks for the following expression when performing production
// builds. Don't change how this line looks, otherwise you may break tree-shaking.
const modulePromise = platformBrowserDynamic().bootstrapModule(AppModule);