错误:在中微子节点中启用热模块替换时绑定EADDRINUSE

时间:2017-12-09 15:15:08

标签: node.js neutrino

我正在使用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}`)
})

当我编辑文件时,我会得到这个:

enter image description here

我想知道是否可以像这样使用热模块更换?有人有经验吗?

谢谢。

1 个答案:

答案 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', () => /* ... */);
}