嗨,任何人,
正如标题所提到的,节点 10 的工作代码,而不是节点 12 的工作代码,它报告:
连接丢失 - 3540:错误:1425F102 :SSL例程:ssl_choose_client_version :不支持的协议:c :\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1922:
{"message":"无法连接到localhost:1433 - 流被销毁后无法调用 write","code":"ESOCKET"}
有什么帮助吗? 操作系统是 windows 10 64 位,SQL Server 是 2012 64 位
问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}
嘿@c5soft! 👋
我知道禁用加密“解决”了您的问题。 这对于您的用例来说可能是可以接受的,但禁用加密并不是真正的解决方案。 😅
对于那些遇到类似错误的人,这是因为自 Node.js 12 以来,默认的 TLS 设置被收紧了。 很可能您的 SQL Server 不支持 TLS 1.2,但在 Node.js 12 中默认需要它。您可以在启动节点时通过命令行标志(例如--tls-min-v1.0
)或通过传递自定义指定minVersion: 'TLSv1'
或您需要使用的任何 TLS 版本的Connection
构造函数的cryptoCredentialsDetails
选项。
以防万一有人遇到这个问题,同样的事情发生在节点的 activeDirectory2 上,基于 LDAPJS:将该选项添加到 tlsOptions 解决了问题
问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}
谢谢 !!!
嘿@c5soft! 👋
我知道禁用加密“解决”了您的问题。 这对于您的用例来说可能是可以接受的,但禁用加密并不是真正的解决方案。 😅
对于那些遇到类似错误的人,这是因为自 Node.js 12 以来,默认的 TLS 设置被收紧了。 很可能您的 SQL Server 不支持 TLS 1.2,但在 Node.js 12 中默认需要它。您可以在启动节点时通过命令行标志(例如
--tls-min-v1.0
)或通过传递自定义指定minVersion: 'TLSv1'
或您需要使用的任何 TLS 版本的Connection
构造函数的cryptoCredentialsDetails
选项。
太感谢了!
它适用于我的 nestjs 项目!
对于那些在 nestjs 中遇到同样问题的人。
TypeOrmModule.forRoot({
type: 'mssql',
host: 'localhost',
port: 1433,
username: 'root',
password: 'root',
database: 'test',
entities: [],
synchronize: true,
options: {
cryptoCredentialsDetails: {
minVersion: 'TLSv1'
}
}
}),
最有用的评论
问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}