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