Node.js 接收:';身份验证错误:错误:读取EconReset';当通过代理连接到google云平台时

Node.js 接收:';身份验证错误:错误:读取EconReset';当通过代理连接到google云平台时,node.js,proxy,google-cloud-platform,google-natural-language,Node.js,Proxy,Google Cloud Platform,Google Natural Language,我一直在从事一个Node.js项目,该项目访问google cloud api。当我在外部网络中时,请求工作正常,我收到了预期的答案。但是,当我在访问smpt服务器所必需的协作代理后面时,我收到以下错误: 验证错误:错误:读取EconReset 为了通过协作代理,我使用了cntlm,并将其设置为中提到的环境代理 此外,我还启用了GRPC冗余和GRPC握手跟踪,如下面的代码所示 process.env.GRPC_VERBOSITY = 'DEBUG' process.env.GRPC_TRACE

我一直在从事一个Node.js项目,该项目访问google cloud api。当我在外部网络中时,请求工作正常,我收到了预期的答案。但是,当我在访问smpt服务器所必需的协作代理后面时,我收到以下错误:

验证错误:错误:读取EconReset

为了通过协作代理,我使用了cntlm,并将其设置为中提到的环境代理

此外,我还启用了GRPC冗余和GRPC握手跟踪,如下面的代码所示

process.env.GRPC_VERBOSITY = 'DEBUG'
process.env.GRPC_TRACE = 'handshaker'

process.env.HTTP_PROXY = 'http://127.0.0.1:3128'
process.env.http_proxy = 'http://127.0.0.1:3128'
process.env.https_proxy = 'http://127.0.0.1:3128'
process.env.HTTPS_PROXY = 'http://127.0.0.1:3128'
process.env.PROXY = 'http://127.0.0.1:3128'
process.env.proxy = 'http://127.0.0.1:3128'


// Imports the Google Cloud client library
const language = require('@google-cloud/language');

// Instantiates a client
const client = new language.LanguageServiceClient({
    projectId:'CNL-Showcase',
    keyFilename: 'path/to/file/creds.json'
});



const document = {
    content: request,
    type: 'PLAIN_TEXT',
    language: 'DE',
    encodingType: 'UTF-8'
};
console.log('sending to Google Api');

client
    .analyzeEntities({ document: document })
    .then((results: any) => {
         ...
    }).catch((err: any) => {
        console.error('ERROR:', err);
        res.send(err);
    });
注意:我的creds文件的路径是故意更改的,如上所述,如果我不支持代理,它就可以正常工作

控制台输出如下所示:

D0809 09:49:45.850000000  3460 dns_resolver.cc:339] Using native dns resolver
sending to Google Api
D0809 09:49:46.039000000  3460 dns_resolver.cc:280] Start resolving.
I0809 09:49:46.069000000  3460 handshaker.cc:141] handshake_manager 
000000000423BE30: adding handshaker http_connect [0000000
00286BDD0] at index 0
I0809 09:49:46.073000000  3460 handshaker.cc:141] handshake_manager     
000000000423BE30: adding handshaker security [00000000028
6AE00] at index 1
I0809 09:49:46.076000000  3460 handshaker.cc:212] handshake_manager     
000000000423BE30: error="No Error" shutdown=0 index=0, ar
gs={endpoint=0000000002868FA0, args=00000000028617C0 {size=9:     
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_f
actory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,     
grpc.server_uri=dns:///language.googleapis.com:443, grpc.
http_connect_server=language.googleapis.com:443,         
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https,
 grpc.security_connector=00000000028F54E0,         
grpc.subchannel_address=ipv4:127.0.0.1:3128}, read_buffer=0000000002876860     
(length
=0), exit_early=0}
I0809 09:49:46.081000000  3460 handshaker.cc:253] handshake_manager     
000000000423BE30: calling handshaker http_connect [000000
000286BDD0] at index 0
I0809 09:49:46.083000000  3460 http_connect_handshaker.cc:300] Connecting to     
server language.googleapis.com:443 via HTTP prox
y ipv4:127.0.0.1:3128
I0809 09:49:46.211000000  3460 handshaker.cc:212] handshake_manager     
000000000423BE30: error="No Error" shutdown=0 index=1, ar
gs={endpoint=0000000002868FA0, args=00000000028617C0 {size=9:     
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_f
actory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,     
grpc.server_uri=dns:///language.googleapis.com:443, grpc.
http_connect_server=language.googleapis.com:443,     
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https,
 grpc.security_connector=00000000028F54E0,     
grpc.subchannel_address=ipv4:127.0.0.1:3128}, read_buffer=0000000002876860     
(length
=0), exit_early=0}
I0809 09:49:46.211000000  3460 handshaker.cc:253] handshake_manager     
000000000423BE30: calling handshaker security [0000000002
86AE00] at index 1
I0809 09:49:46.303000000  3460 handshaker.cc:212] handshake_manager     
000000000423BE30: error="No Error" shutdown=0 index=2, ar
gs={endpoint=000000000287A7F0, args=0000000002862720 {size=10:     
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_
factory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,     
grpc.server_uri=dns:///language.googleapis.com:443, grpc
.http_connect_server=language.googleapis.com:443, 
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https
, grpc.security_connector=00000000028F54E0,     
grpc.subchannel_address=ipv4:127.0.0.1:3128,     
grpc.auth_context=000000000285DD60},
 read_buffer=0000000002876860 (length=0), exit_early=0}
I0809 09:49:46.304000000  3460 handshaker.cc:240] handshake_manager     
000000000423BE30: handshaking complete -- scheduling on_h
andshake_done with error="No Error"
I0809 09:49:46.305000000  3460 subchannel.cc:608] New connected subchannel at     
0000000002867790 for subchannel 00000000028A027
0
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET

我无法确定问题的原因,因为握手似乎很有效

经过广泛的搜索,我找到了一个解决方案:
安装代理服务器,通过代理服务器路由本地计算机上库的请求

对于Windows,我发现了两个应用程序:


我希望这能帮助那些试图在代理网络上运行PubSub的人。

这里也一样。你找到解决办法了吗?不幸的是没有。我还没有找到任何解决方案,但在我发布问题一周左右后,我就不再寻找解决方案了。