2017-07-31 97 views
0

我正在嘗試使用節點JS獲取API數據。我正在使用這個節點包來這樣做。使用節點JS獲取API數據

https://www.npmjs.com/package/cryptocompare

該包的文檔是很容易的。

global.fetch = require('node-fetch') 
const cc = require('cryptocompare') 

cc.price('BTC', ['USD', 'EUR']) 
.then(prices => { 
    console.log(prices) 
}) 
.catch(console.error) 

我用npm.runkit.com測試過它,它工作。

但是,當我將軟件包安裝到我的應用程序中時,控制檯中看不到任何輸出。

我正在使用JetBrains WebStorm,這些是我採取的步驟。

  1. 創建新快報應用
  2. NPM安裝-g表達發電機
  3. NPM安裝--save節點取
  4. NPM安裝--save cryptocompare
  5. NPM安裝

然後在/routes/index.js內加入以下內容

var express = require('express'); 
var router = express.Router(); 
global.fetch = require('node-fetch'); 
const cc = require('cryptocompare'); 

/* GET home page. */ 

cc.price('BTC', ['USD']) 
    .then(prices => { 
     console.log(prices) 
}).catch(console.error); 

router.get('/', function(req, res, next) { 
    res.render('index', { 
     title: 'Example' 
    }); 
}); 

module.exports = router; 

但是在控制檯日誌中什麼也沒有顯示。我試着將根目錄下的global.fetch移動到app.js,但那也沒有做任何事。

我在這裏做錯了什麼?

+0

嘗試擺脫你的第二個例子中的方括號。文檔沒有它們。 – spicypumpkin

+0

什麼是方括號? 'USD'附近的那些? – Halnex

+0

mmhm它與「傳遞單一貨幣對」下的示例不同 – spicypumpkin

回答

2
var express = require('express'); 
    var router = express.Router(); 
    global.fetch = require('node-fetch'); 
    const cc = require('cryptocompare'); 

    /* GET home page. */ 


    router.get('/', function(req, res, next) { 
cc.price('BTC', ['USD']) 
     .then(prices => { 
    res.render('index', { 
      title: prices 
     }); 
    }).catch(console.error); 

    }); 

    module.exports = router; 

這將適用於你

+0

這將爲'title'返回'[object Object]' – Halnex

+1

標題:prices.USD 使用這個,它會起作用。 –

+0

太棒了。我是MEAN堆棧的新手。我非常感謝你的耐心。 – Halnex

0

不知道爲什麼你沒有得到任何東西。我嘗試了相同的步驟並得到了結果。

我只是做了一件不同的事情,我將整個代碼粘貼在一個名爲abc.js的文件中。

,然後我跑了它在這樣

abc.js

節點命令行,我得到這個結果

{USD:2797.06}

你能請再試一次,因爲它對我來說很棒。如果您遇到任何問題,請告知我。

繼續...

所以,如果你想在index.js使用它,那麼你可以做這樣的事情

cc.price('BTC', ['USD']) 
    .then(function(prices){ 
     console.log(prices) 
}).catch(function(error){ 
console.log(error); 
}); 

我只是改變了它了Syntex從ES6到ES5

+0

是的,我只是測試了這一點,它的工作原理。但我想將數據傳遞給'index.js'路線,最終能夠在頁面上而不是控制檯上打印出數據。 – Halnex

+0

@Halnex哦,等等,我假設你正在看你的IDE控制檯。您正在獲取路由器的數據_outside_,這意味着這是在您的服務器開始運行時立即發生的。如果您將獲取調用移動到路由器內部並在獲取回調中呈現,您應該在瀏覽器控制檯中看到數據。 – spicypumpkin

+0

@spicypumpkin我一直在試圖將其移動到路由器中,並在'index.js'上呈現,但IDE始終拋出語法錯誤。我無法在'title'所在的數組中移動提取片段。 – Halnex

相關問題