node.js - 节点 ECONNRESET 隧道-ssh 和猫鼬
问题描述
当我启动 Express 时,它会在大约 5 分钟内崩溃。
使用此依赖项。
- 表达 4.17.1
- 猫鼬 5.9.7
- 隧道-ssh 4.1.4
等待大约 5 分钟后,出现这样的错误。
[nodemon] starting `node bin/www`
events.js:187
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:201:27)
Emitted 'error' event on Server instance at:
at Client.emit (events.js:210:5)
at Socket.<anonymous> (/Users/project/node_modules/tunnel-ssh/node_modules/ssh2/lib/client.js:294:10)
at Socket.emit (events.js:210:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read',
level: 'client-socket'
}
[nodemon] app crashed - waiting for file changes before starting...
数据库连接。
module.exports.A = async () => {
this.ssh = await tunnel({
keepAlive: true,
host: HOST,
username: USERNAME,
privateKey: fs.readFileSync(KEY),
dstHost: DST_Host,
dstPort: DST_Port
})
mongoose.connect(URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
})
}
module.exports.B = async () => {
this.ssh.close()
}
SSH 配置。
Host *
ClientAliveInterval 8
ServerAliveInterval 60
TCPKeepAlive yes
解决方案
解决了
mongoose.connect(URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
serverSelectionTimeoutMS: 30000, // Use this.
socketTimeoutMS: 30000 // Use this.
})
推荐阅读
- python - 我想通过用户输入从列表中删除多个元素
- python-3.x - “NotFoundError:没有算法有效!”是什么意思?
- javascript - 无法根据反应网络应用程序中的过滤器值进行搜索
- python - 您可以根据 nc 文件中多年的日期范围提取数据吗?
- android - 如何在android中获取纬度和经度
- python - requests 模块的 json 和 files 属性
- cordova - Ionic 4 Camera 插件 - 将压缩图像保存到相册后的图像大小
- sql - 重复的 oacle sql 值
- python - Python CUDA 并行化多个小矩阵的 SVD
- python - TypeError:字符串索引必须是整数 - JSON Python