Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点JS获取API数据_Javascript_Node.js - Fatal编程技术网

Javascript 使用节点JS获取API数据

Javascript 使用节点JS获取API数据,javascript,node.js,Javascript,Node.js,我正在尝试使用NodeJS获取API数据。我正在使用这个节点包来实现这一点 该软件包的文档编制非常简单 global.fetch = require('node-fetch') const cc = require('cryptocompare') cc.price('BTC', ['USD', 'EUR']) .then(prices => { console.log(prices) }) .catch(console.error) 我已经用它测试过了,它很有效 但是,当我将软

我正在尝试使用NodeJS获取API数据。我正在使用这个节点包来实现这一点

该软件包的文档编制非常简单

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

cc.price('BTC', ['USD', 'EUR'])
.then(prices => {
  console.log(prices)
})
.catch(console.error)
我已经用它测试过了,它很有效

但是,当我将软件包安装到我的应用程序中时,我在控制台中看不到任何输出

我正在使用JetBrains WebStorm,以下是我采取的步骤

  • 创建新的Express应用程序
  • npm安装-g快速发电机
  • npm安装--保存节点获取
  • npm安装--保存加密比较
  • 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
    ,但也没有任何效果


    我做错了什么?

    不知道为什么你什么都没有得到。我试着用同样的步骤,得到了结果

    我只是做了一件不同的事情,我将整个代码粘贴到一个名为abc.js的文件中

    然后我在命令行中这样运行它

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

    我得到了这个结果

    {美元:2797.06}

    你能再试一次吗?因为它对我来说太棒了。如果你遇到任何问题,请告诉我

    继续

    因此,如果您想在index.js中使用它,那么您可以这样做

    cc.price('BTC', ['USD'])
        .then(function(prices){
            console.log(prices)
    }).catch(function(error){
    console.log(error);
    });
    
    我刚把它的syntex从es6改成了es5

        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;
    

    这对您很有用

    请尝试去掉第二个示例中的方括号。文档中没有。什么方括号?美元附近的货币
    ?嗯,这与“传递一对货币”下的示例不同。都是一样的,您仍然可以在一个数组中传递一个项目。在任何情况下,去掉方括号都没有多大作用。是的,我刚刚测试了这个,它可以工作。但是我想将数据传递到
    index.js
    route,最终能够在页面上而不是控制台上打印数据。@Halnex哦,等等,我以为你在看IDE的控制台。您正在从路由器外部获取数据,这意味着在服务器开始运行时,这种情况会立即发生。如果将fetch调用移动到路由器内部,并在fetch回调内部进行渲染,您应该会在浏览器控制台中看到数据。@spicypumpkin我一直试图将其移动到路由器内部,并在
    index.js
    上进行渲染,但IDE不断抛出语法错误。我无法将提取片段移动到
    标题
    所在的数组中。@Halnex什么数组?您应该能够通过闭包或作为对象属性访问
    价格
    。你能告诉我语法错误在哪里吗?也许把它编辑成你的原始问题,我就可以发布一个合理的答案。
    res.render('index',{title:'Example'})此数组。假设我想打印价格而不是
    示例
    -传递
    cc.price('BTC','USD')
    返回
    [object Promise]
    -我对均值堆栈是新手,我希望举个例子。这返回
    [object object]
    标题
    。我是个新手。我真的很感激你的耐心。@Halnex,没问题。如果你愿意,我可以给你发一封电子邮件,这本书真的很好,很容易理解。如果需要,请告诉我。