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的原因暫時不瞭解,先記錄此次問題的解決方案。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章