【问题标题】:express router.get() function SyntaxError表达 router.get() 函数 SyntaxError
【发布时间】:2014-05-10 22:33:30
【问题描述】:

我正在尝试创建一个路由以从 JSON-RPC API 返回 JSON 数据。

我的代码:

router.get('/balance', function(req, res, client) {
    res.json({
        client.getBalance('*', 1, function(err, balance) {
            if(err)
                console.log(err);
            else
                console.log('Balance: ', balance);
        });
    });
});

它使用 npm 包 node-litecoin。我需要它并像这样创建了一个客户端变量:

var client = new litecoin.Client({
    host: 'localhost',
    port: 9332,
    user: 'myaccount',
    password: 'mypass'
});

client.getBalance('*', 1, function(err, balance) { ^ SyntaxError: Unexpected token .

为什么会出现这个错误?

【问题讨论】:

  • 如何让路由'/balance'输出client.getBalance()函数?

标签: javascript json node.js express


【解决方案1】:

为什么会出现这个错误?

因为client.getBalance('*', 1, function(err, balance) { 不能在你放置它的地方。

让我们仔细看看:

res.json({ ... });

这里的{...} 表示object literal。文字的“内容”必须是逗号分隔的key: value 对列表,例如

res.json({foo: 'bar'});

您改为在那里调用函数:

res.json({ client.getBalance(...) });

这是无效的。


如何让路由'/balance' 输出client.getBalance() 函数?

看起来client.getBalance 是一个异步函数调用,因此将其返回值传递给res.json 也不起作用。您必须将回调中获得的结果传递给res.json

router.get('/balance', function(req, res) {
    client.getBalance('*', 1, function(err, balance) {
        if(err)
            console.log(err);
        else
            console.log('Balance: ', balance);

        res.json(balance);
    });
});

如果你对 JavaScript 的语法不是很熟悉,我推荐阅读MDN JavaScript Guide

【讨论】:

  • 嗯,这只是意味着client 没有方法getBalance。由于我不知道client 应该是什么或getBalance 应该做什么,所以我在这里无能为力。
  • 哦,你在哪里将client 初始化为某个变量。然后我想只需从参数列表中删除 client 即可修复它。
  • 对。愚蠢的错误。谢谢。
猜你喜欢
  • 2017-04-18
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2021-11-16
相关资源
最近更新 更多