2015-09-18 59 views
-3

我有一個SteamBot的問題,我最近設置了處理CS:GO賭博網站的存款和獎金。它非常適用扔我這個錯誤之前沉積和發送的貿易提供了第一個兩分鐘,:蒸汽交易機器人問題 - 空字符串

C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Parser.js:82 
     throw err; 
      ^
Error: number format error: empty string 
    at Error (native) 
    at Function.Long.fromString (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\node_modules\long\dist\Long.js:180:19) 
    at toAccountId (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\index.js:376:15) 
    at SteamTradeOffers.makeOffer (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\index.js:396:42) 
    at Query._callback (C:\Users\Frederik\Desktop\bot\sell.js:160:13) 
    at Query.Sequence.end (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24) 
    at Query._handleFinalResultPacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Query.js:144:8) 
    at Query.EofPacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Query.js:128:8) 
    at Protocol._parsePacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Protocol.js:271:23) 
    at Parser.write (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Parser.js:77:12) 

我也到處去尋找解決這一點,但是沒有設法找到任何東西。任何幫助或解決方案將非常感激!我不確定哪些代碼可能會導致問題,所以這裏是一個包含全部內容的pastebin:http://pastebin.com/x9YkhkCX

+0

這裏有一個提示,你的錯誤消息告訴你非常具體的行看。 – user2366842

+0

您忘記了'C:\ Users \ Frederik \ Desktop \ bot \ sell.js:160:13'上的某個字符串,該字符串代表的是C:\ Users \ Frederik \ Desktop \ bot \ node_modules中的帳號\蒸汽tradeoffers \ index.js:376:15'。 – Kenney

+0

@ user2366842我在這個編程領域沒有經驗。我已經看過每一個文件和每一行,但是沒有看到任何內容。 –

回答

0

解決它歸結爲了解發生了什麼問題。一旦你知道什麼是錯的,你會自動知道它應該是什麼樣的。 而不是確切地說需要改變什麼來修復它,我希望告訴你如何找到自己。

如果這是您第一次遇到堆棧跟蹤,下面介紹如何讀取這個堆棧跟蹤。

它開始是這樣的:

C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Parser.js:82 
     throw err; 
      ^

一個 '解析器' 一個mysql庫中拋出一個錯誤;這告訴你一些SQL查詢失敗。 接下來,它接着解釋了ERR(^):

Error: number format error: empty string 

的錯誤是,一些格式不正確的,因爲它是一個空字符串。這就像是當一個函數需要寫入一個數字時,將一個空白的函數傳遞給它。但事實並非如此,所以它不知道該怎麼做,並引發了一個錯誤。

所以現在我們知道發生了什麼問題 - 處於低水平。讓我們來看看哪裏有這是錯的,讓我們知道爲什麼

我們在堆棧跟蹤找到這樣的:函數調用,從節目開始了一路,到引發錯誤:

at Error (native) 

這第一行說,在一個錯誤這個錯誤orinates函數在某處稱爲「本地」:在執行環境(JavaScript引擎)內的某處,而不是在正在執行的程序中。 這不會給我們任何新的上下文 - 我們知道已經有一個錯誤。

at Function.Long.fromString (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\node_modules\long\dist\Long.js:180:19) 

在這裏,我們得到了有關數字的東西:這似乎是一個函數的字符串轉換爲Long,這是一種類型的大量。這裏也沒什麼新聞,因爲錯誤信息已經告訴我們empty string。但至少我們正在走上正軌。

at toAccountId (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\index.js:376:15) 

這裏我們看到數字/字符串可能是'account-id',用在stream-tradeoffers模塊中。現在讓我們假設空字符串被傳遞給這個函數,並且在將它轉換爲一個帳號id的過程中它變成了一個數字。之前,我們要調試的第三方模塊,讓我們先看看問題是不是在主程序:

at SteamTradeOffers.makeOffer (C:\Users\Frederik\Desktop\bot\node_modules\steam-tradeoffers\index.js:396:42) 

同樣庫,依次爲:

at Query._callback (C:\Users\Frederik\Desktop\bot\sell.js:160:13) 

在OP的pastebin我們在那找到行:

offers.makeOffer ({ 
    partnerSteamId: row[i].userid, 
    itemsFromMe: item, 
    accessToken: row[i].token, 
    itemsFromThem: [], 
    message: 'Congratulations! You won a game on '+sitename+'. Your game ID is #'+gamenum 
}, function(err,response){.... 

在這裏,我們找到調用makeOffer,以及使用的參數。它可能是其中一個是空字符串,或者是由makeOffer方法讀取的具有空字符串屬性的對象;爲了弄清楚,我們必須檢查前兩個堆棧跟蹤行中提到的文件。

爲了節省時間,我們並不真正需要看看堆棧跟蹤的其餘部分,因爲從這裏只引用mysql庫,這是不太可能的問題是存在的:

at Query.Sequence.end (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24) 
    at Query._handleFinalResultPacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Query.js:144:8) 
    at Query.EofPacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\sequences\Query.js:128:8) 
    at Protocol._parsePacket (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Protocol.js:271:23) 
    at Parser.write (C:\Users\Frederik\Desktop\bot\node_modules\mysql\lib\protocol\Parser.js:77:12) 
0

根據我的經驗,問題來自mysql數據庫,桌面遊戲&行用戶標識和行標記如下。

partnerSteamId: row[i].userid 

accessToken: row[i].token 

執行PHP腳本執行的mysql_query不正確地執行它,所以它不會在數據庫中輸入任何用戶ID &令牌如果另一個數據庫行太大。

這就是我的理論。