在Electron应用程序中发出HTTPS请求时,为什么会出现“错误:写EPROTO”?

时间:2015-11-16 19:25:54

标签: node.js https electron

我已经在墙上砸了好几天,所以我转向Stackoverflow的聪明人帮忙。这是交易:

系统详细信息

  • 节点版本(由于电子依赖性而无法更改):v4.1.1
  • 电子版:v0.34.3
  • 操作系统版本:Mac OSX Yosemite 10.10.5(14F1021)

问题描述

我正在构建一个必须与我公司的应用服务器通信的Electron应用。服务器连接必须通过HTTPS。我正在使用Node的内置https模块。向服务器发出请求时,我收到以下错误:

{ [Error: write EPROTO] code: 'EPROTO', errno: 'EPROTO', syscall: 'write', address: undefined }

我已经完成了大量的谷歌搜索,我发现的大部分内容都指向代理,但我没有使用代理。我尝试了以下内容:

  • 在选项哈希中设置rejectUnauthorized: false
  • 修改secureProtocol选项(无结果)
  • 试图设置--tls-cipher-list(不知道我在那里做什么)

我可以毫无问题地通过curl提出请求。不幸的是,我无法发布我正在提出请求的实际网址。

示例代码

以下是一些说明问题的示例代码(Coffeescript):

https = require 'https'

options = {
  host: '[Application URL]'
  path: '/'
  method: 'GET'
  port: 443
}

options.agent = new https.Agent(options)

callback = (response) ->
  str = ''
  console.log response
  console.log "STATUS: #{response.statusCode}"
  console.log "HEADERS: #{JSON.stringify(response.headers)}"
  response.setEncoding 'utf-8'
  response.on 'data', (chunk) -> str += chunk
  response.on 'end', -> console.log str

makeRequest = ->
  req = https.request options, callback
  req.on 'error', (err) ->
    console.log err
  req.end()

makeRequest()

有谁知道可能导致此问题的原因是什么?它是一个Node问题还是具有应用服务器配置的东西?这个错误正在扼杀我并阻止我在工作中达到一个里程碑,所以任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

要解决此问题,您需要设置https-proxy,可以使用以下命令完成此操作:

npm config set https-proxy http://proxy.example.com:8080