我正在使用neutrino node.js preset启用热模块替换,这是我在index.js
中的内容:
import fastify from 'fastify'
import router from './router'
const ft = fastify()
ft.register(router)
// enable hot module replacement
if (module.hot) {
module.hot.accept()
}
// listen
ft.listen(3000, 'localhost', (err) => {
if (err) throw err
console.log(`server listening on ${ft.server.address().port}`)
})
当我编辑文件时,我会得到这个:
我想知道是否可以像这样使用热模块更换?有人有经验吗?
谢谢。
答案 0 :(得分:0)
将HMR与Node.js一起使用时,它比Web项目更棘手,因为重新加载顶级文件意味着需要重新启动该过程。
如果您从Neutrino docs on HMR in Node.js留意,您会发现HMR未在顶级index.js
文件上执行,而是在index.js
的项目上执行}进口。
因此,您希望接受特定内容index.js
导入,并使用内部的内容,而不是尝试重新加载index.js
,而不会重新启动该过程。
if (module.hot) {
module.hot.accept('./router');
// Optionally use a function to re-bind functionality
// after the accept:
// module.hot.accept('./router', () => /* ... */);
}