2015-12-07 339 views
2

我是一個新手,並試圖創建一個基於poloniex.js API的應用程序獲取錯誤 - 類型錯誤:curl.setopt不是一個函數] set node-curl(not working)和節點libcurl(部分工作,但功能似乎不正確表達)略有混淆兩個捲曲)節點捲曲已過時,也許這就是問題 - 你能告訴什麼是錯的?TypeError:curl.setopt不是函數]

'use strict'; 

    var autobahn = require('autobahn'), 
    crypto = require('crypto'), 
    async = require('async'), 
    https = require('https'), 
    nonce = require('nonce')(), 
    querystring = require('querystring'), 
    Curl = require('node-libcurl').Curl, 
    microtime = require('microtime'), 
    events = require('events'), 
    util = require('util'); 

    var Poloniex = function Poloniex() {}; 

    Poloniex._query_tradeApi = function (req, callback) { 
    var post_data, 
    hash = crypto.createHmac('sha512', "key-key-key"), 
    sign, 
    received, 
    headers; 

    nonce = (new Date()).getTime() * 1000; 
    post_data = querystring.stringify(req); 
    hash.update(post_data); 
    sign = hash.digest("hex"); 

    try { 
    headers = [ 'Key: ' + "SECRET-SECRET-SECRET", 'Sign: ' + sign ]; 

    var curl = new Curl(), 
    close = curl.close.bind(curl); 
    curl.setopt('URL', 'https://poloniex.com/tradingApi/'); 
    curl.setopt('POST', 1); 
    curl.setopt('POSTFIELDS', post_data); 
    curl.setopt('HTTPHEADER', headers); 

    received = ''; 

    curl.on('data', function (chunk) { 
     received += chunk; 
     return chunk.length; 
    }); 

    curl.on('header', function (chunk) { 
     return chunk.length; 
    }); 

    curl.on('error', curl.close.bind(curl),function (e) { 
     console.error('exchanges/poloniex', '_query_tradeApi', e, 
    req, e.stack); 
     callback(e, undefined); 
     curl.perform(); 
     curl.close(); 
    }); 

    curl.on('end', function() { 
     try { 

      var data = JSON.parse(received); 
      callback(undefined, data); 

     } catch (ex) { 
      console.error('exchanges/poloniex', '_query_tradeApi', 
    ex,  req, ex.stack); 
      callback(ex, received); 
     } 

     curl.close(); 
    }); 

    curl.perform(); 

    } catch (ee) { 
    console.error('exchanges/poloniex', '_query_tradeApi', ee, 
    req, ee.stack); 
    callback(ee, received); 
    } 
    }; 
+0

作爲提示丟棄curl並使用Node.js請求模塊https://github.com/request/request獲取或發佈數據。 –

回答

2

所需的語法是curl.setOpt,而不是curl.setopt。

+0

是的,謝謝..雖然沒有看到有什麼區別( – Oleg999

+0

)你改變它後會得到同樣的錯誤信息嗎?如果是這樣,那很奇怪,並且表明你在調用方法時仍然有不正確的語法。 – Gary

+0

我的意思是在規範中curl.setOpt看到了這個語法需要的正確性。這個問題已經被修正了,但是顯然這個代碼太滿了。現在我會檢查 – Oleg999