几天来,我一直在脑子里碰壁,所以我向Stackoverflow的聪明人寻求帮助。这是交易:

系统详细资料

  • Node 版本(由于 Electron 依赖性而无法更改):v4.1.1
  • Electron 版: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 }
    我已经做了很多Google搜寻工作,而且我发现的大多数内容都指向代理,但我没有使用代理。我尝试了以下方法:
  • 在选项哈希中设置rejectUnauthorized: false
  • 修改secureProtocol选项(无结果)
  • 尝试设置--tls-cipher-list(不知道我在那做什么)

  • 我可以通过curl发出请求,而不会出现问题。不幸的是,我无法发布正在请求的实际URL。

    样例代码

    这是一些说明此问题的示例代码(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 问题还是应用程序服务器的配置有问题?此错误正在杀死我,阻止我在工作中达到里程碑,因此,我们将不胜感激。谢谢!

    最佳答案

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

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

    10-02 14:26