问题记录: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的原因暂时不了解,先记录此次问题的解决方案。