整个报错是这样的:
如果是在LLSE,报错就是这样的:
这种一般只发生在ws初学的时候。因为目标主机拒绝连接,npm会直接报错,还不能用try。我发现监听错误就可以解决,目前我也没明白究竟是怎么个原理。
例如你可以这么写:
这样就可以避免nodejs报错了。实际你在真正做项目的时候,一般需要在相关的位置做断线重连,这个监听一般一定是要有的,因为非常有必要在这种情况下向用户发出提示。
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.
});//?
最后编辑: