Express 快速路线HMR与网页包

Express 快速路线HMR与网页包,express,typescript,webpack,webpack-hmr,Express,Typescript,Webpack,Webpack Hmr,我正试图让HMR在服务器端使用express应用程序,我看到了一些奇怪的行为。我的简单测试项目 索引 let httpListener: Server = null; let AppServer = require('./AppServer').default; const port = Config.serverPort; if (process.env.NODE_ENV === 'dev') { if ((module as any).hot) { (module

我正试图让HMR在服务器端使用express应用程序,我看到了一些奇怪的行为。我的简单测试项目

索引

let httpListener: Server = null;

let AppServer = require('./AppServer').default;
const port = Config.serverPort;

if (process.env.NODE_ENV === 'dev') {
    if ((module as any).hot) {
        (module as any).hot.addDisposeHandler((data: any) => {
            httpListener.close();
            AppServer = require('./AppServer').default;
        });
        console.log('index.ts', (module as any).hot.dependencies);
        (module as any).hot.accept((err: any) => {
            console.log('HMR Error', err);
        });
    }
}

httpListener = AppServer.app.listen(port, (error: Error) => {
    if (error) {
        console.error(error);
    } else {
        console.info(`Listening on port ${port}.`);
    }
});
AppServer.ts

class AppServer {
    public app: express.Application = express();

    constructor() {    
        this.app.use('/api', (new ApiRouter()).router);
    }
}

export default new AppServer();
和ApiRouter.ts

export class ApiRouter {
    public router: express.Router = express.Router();

    constructor() {
        this.router.use('/auth', (new AuthRouter()).router);

        this.router.get('/', (req, res) => {
            res.json({success: true});
        });
    }
}
Webpack绑定正确,HMR报告模块正在更新。如果我更改index.ts中的某些代码,这些更改将生效。然而,当我将
{success:true}
翻转到
{success:false}
时,我看到HMR更新

[HMR] Updated modules:
[HMR]  - ./src/server/AppServer.ts
[HMR]  - ./src/server/index.ts
[HMR]  - ./src/server/api/ApiRouter.ts
但是当我到达终点时,我返回
{success:true}
。因此,尽管HMR似乎做了正确的事情,但代码在运行时没有被更改。我怀疑我遗漏了module.hot.accept如何在这里工作的一些基本信息,但我无法找出哪里出了问题


有人能让它正常工作吗

您是否将
'webpack-hot-middleware/client'
作为网页条目的第一件事?它是服务器端的,所以我做了
webpack/hot/poll?1000
但是是的,它在那里