• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

JavaScript Node.js的npm在创建新websocket连接时报错:ECONNREFUSED

小鼠同学

【Lv:4】

VIP
正式会员
注册
2022/05/15
消息
380
金粒
97金粒
整个报错是这样的:
Uncaught Error Error: connect ECONNREFUSED ::1:8080 at __node_internal_captureLargerStackTrace (internal/errors:490:5) at __node_internal_exceptionWithHostPort (internal/errors:668:12) at afterConnect (net:1494:16) at callbackTrampoline (internal/async_hooks:130:17) --- TickObject --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:202:43) at emitInitScript (internal/async_hooks:505:3) at nextTick (internal/process/task_queues:132:5) at onDestroy (internal/streams/destroy:103:15) at Socket._destroy (net:811:5) at _destroy (internal/streams/destroy:109:10) at destroy (internal/streams/destroy:71:5) at afterConnect (net:1503:10) at callbackTrampoline (internal/async_hooks:130:17) --- TCPCONNECTWRAP --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:202:43) at internalConnect (net:1049:26) at defaultTriggerAsyncIdScope (internal/async_hooks:464:18) at emitLookup (net:1323:9) at onlookup (dns:109:8) at callbackTrampoline (internal/async_hooks:130:17) --- GETADDRINFOREQWRAP --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:202:43) at lookup (dns:221:21) at <anonymous> (net:1300:5) at defaultTriggerAsyncIdScope (internal/async_hooks:464:18) at lookupAndConnect (net:1299:3) at Socket.connect (net:1193:5) at connect (net:243:17) at netConnect *** at ClientRequest (_http_client:358:45) at request (http:98:10) at initAsClient *** at WebSocket*** at <anonymous> *** at Module._compile (internal/modules/cjs/loader:1254:14) at Module._extensions..js (internal/modules/cjs/loader:1308:10) at Module.load (internal/modules/cjs/loader:1117:32) at Module._load (internal/modules/cjs/loader:958:12) at executeUserEntryPoint (internal/modules/run_main:81:12) at <anonymous> (internal/main/run_main_module:23:47)
如果是在LLSE,报错就是这样的:
node:events:505 throw er; // Unhandled 'error' event ^ Error: connect ECONNREFUSED 127.0.0.1:6848 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) Emitted 'error' event on WebSocket instance at: at emitErrorAndClose (C:\Users\Administrator\Documents\切区\bedrock-server-1.19.63.01client\plugins\nodejs\LevelRipper\node_modules\ws\lib\websocket.js:1008:13) at ClientRequest.<anonymous> (C:\Users\Administrator\Documents\切区\bedrock-server-1.19.63.01client\plugins\nodejs\LevelRipper\node_modules\ws\lib\websocket.js:856:5) at ClientRequest.emit (node:events:527:28) at Socket.socketErrorListener (node:_http_client:454:9) at Socket.emit (node:events:527:28) at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -4078, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 6848 }

这种一般只发生在ws初学的时候。因为目标主机拒绝连接,npm会直接报错,还不能用try。我发现监听错误就可以解决,目前我也没明白究竟是怎么个原理。
例如你可以这么写:
JavaScript:
const WebSocket_module = require("ws");
let ws = new WebSocket_module('ws://localhost:8080');
ws.on("error",()=>{
    console.log("无法连接至服务器");
    //如果是LLSE插件,需要去掉前面的console.
});//?
这样就可以避免nodejs报错了。实际你在真正做项目的时候,一般需要在相关的位置做断线重连,这个监听一般一定是要有的,因为非常有必要在这种情况下向用户发出提示。
 
最后编辑:

在线会员

  • 丨星星丨
  • 常若孤
  • JESSIECHENpc
  • gtxy33
  • 合成天下精品大果
  • Tz_Kirito
  • Black_Cat
  • 兰齐儿m
  • xiaolina
  • voisop_huang
  • phoelycia
  • ROYALDOR
  • Angel_XQ
  • 凯雪kai_xue
  • yellow_Gay
  • tlndtilyp
  • PixelAB
后退
顶部 底部