MpVue Error: listen EADDRNOTAVAIL: address not available

问题记录:mpvue小程序启动报错的一次解决方式

补充:最后发现问题本质:之前在某次配置中,在一次host修改的过程中,将host文件变更为host.txt文件,导致host路由异常

由于放假返回老家,在启动小程序时,一直无法启动服务,报错:

> [email protected] dev /Users/bjcaywq/Documents/WorkSpace/wechat/ywxApplet-2.0.0
> node build/dev-server.js wx

events.js:298
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRNOTAVAIL: address not available 223.82.248.117:8086
    at Server.setupListenHandle [as _listen2] (net.js:1292:21)
    at listenInCluster (net.js:1357:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1496:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:69:10)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1336:8)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'EADDRNOTAVAIL',
  errno: -49,
  syscall: 'listen',
  address: '223.82.248.117',
  port: 8086
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `node build/dev-server.js wx`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/bjcaywq/.npm/_logs/2020-02-01T08_48_42_465Z-debug.log

定位到错误的关键信息

Error: listen EADDRNOTAVAIL: address not available 223.82.248.117:8086

经过查看,我本机的ip是通过路由连接的,ip为:192.168.1.6

全局搜索223.82.248.117无果,223.82.248.117该ip通过百度搜索指向的是家里所在市的地址,怀疑是路由器配置存在某些问题,但是具体原因并不清楚。

因为dev环境一般会采用localhost,搜索'localhost',发现在build/dev-server.js文件中的代码段存在localhost


module.exports = new Promise((resolve, reject) => {
  portfinder.basePort = port
  portfinder.getPortPromise()
  .then(newPort => {
      if (port !== newPort) {
        console.log(`${port}端口被占用,开启新端口${newPort}`)
      }
      var server = app.listen(newPort, 'localhost')
      // for 小程序的文件保存机制
      require('webpack-dev-middleware-hard-disk')(compiler, {
        publicPath: webpackConfig.output.publicPath,
        quiet: true
      })

      resolve({
        ready: readyPromise,
        close: () => {
          server.close()
        }
      })
  }).catch(error => {
    console.log('没有找到空闲端口,请打开任务管理器杀死进程端口再试', error)
  })
})

尝试将localhost修改为本机ip(192.168.1.6),在此执行npm run dev 项目启动成功


      // var server = app.listen(newPort, 'localhost')
      var server = app.listen(newPort, '192.168.1.6')

localhost在解析的过程中变成别的ip的原因暂时不了解,先记录此次问题的解决方案。

猜你喜欢

转载自blog.csdn.net/u010899138/article/details/104137368