Error: getaddrinfo EAI_AGAIN api.spotify.com:443

5

我正在将 Spotify API 集成到 Google Assistant 应用程序中,并实现 Account Linking,但是在控制台中一直出现以下错误:

getaddrinfo EAI_AGAIN api.spotify.com:443

尽管似乎API的实现没有任何问题,但上述错误仍然不断出现。访问令牌已经正确地创建并接收,客户端和秘密ID也没有任何错别字。此外,我在 Spotify Console 上进行了API调用测试 (https://developer.spotify.com/console/get-artist-albums/),并没有发现任何错误。它从Spotify服务器获取了预期的数据,因此应该与 Account LinkingSpotify Server 无关。我自己创建的代码如下:我认为问题可能出在 spotify-web-api-nodenodenpmfirebase-functions 上??最近我做了节点版本控制,所以可能做错了什么。

  • Node 版本:v7.9.0
  • spotify-web-api-node:^4.0.0
  • firebase-functions:^2.0.3
  • npm 版本:6.4.1
  • 已添加引擎:{"node": "8"} // 这在 package.json 中用于使用异步和等待

app.intent(SomeIntent, async (conv, params) => {
    console.log('user info', JSON.stringify(conv.user));
    conv.ask('lets play'); //okay
    const access_token = conv.user.access.token || ''; // okay
    console.log('Your TOKEN information here: ' + access_token); // okay
    spotifyApi.setAccessToken(access_token); // should be set correctly
    let data = await findMusic(); // error in the findMusic func
    conv.ask('found this song。', data.name); //  so no data.name
});

function findMusic() {
    return spotifyApi.getArtistAlbums('43ZHCT0cAZBISjO8DG9PnE').then((data) => {
        console.log('artist song', data.body);
        return data.body; //this does not return because error is produced
    }).catch(err => {
        console.log('Something went wrong!', err);
        return err; // this error is WebapiError: getaddrinfo EAI_AGAIN api.spotify.com:443
    });
}

更新

@Nick-Felker在下面的评论中提到,只有付费计划才允许外部调用。因此,这可能是解决方案(目前尚未证明是否有效,因为我没有使用付费计划。下面的详细说明摘自另一篇StackOverflow帖子中的回答评论

Spark计划仅允许向Google拥有的服务发出出站网络请求。入站调用请求在配额范围内允许。在Blaze计划中,Cloud Functions提供了一个永久的免费层。每个月免费提供前200万次调用、400,000 GB-sec、200,000 CPU-sec和5 GB的Internet出口流量。超过这个免费配额的使用将被收费。定价基于总调用次数和计算时间。计算时间根据为函数分配的内存和CPU数量而变化。使用限制也通过每日和100s限额进行执行。有关更多信息,请参见Cloud Functions价格

更新

在我的情况下,上述解决方案奏效。希望本文能对其他人有所帮助!


1
EAI_AGAIN 是一个 DNS 查询错误!更多细节可以在 https://dev59.com/F1kS5IYBdhLWcg3wN0TA#40182520 找到。 - riyaz-ali
@riyaz-ali 谢谢您的回复。我正在尝试使用“npm install latest-version”来看看它是否有效。但似乎并没有起作用……您认为我还应该做些什么? - Ryohei
3
你是否正在使用 Firebase 的 Blaze 计划?Firebase 会阻止免费版的外部网络调用。 - Nick Felker
1
@NickFelker 目前 Firebase 的计划是 Spark,因此它是免费的计划。所以你的意思是如果我切换到 Blaze 计划,你认为这个问题可以解决?那么当我切换到我的另一个帐户时,我会稍后测试一下。另外,你认为有一些可能指出这个 bug 的线索吗? - Ryohei
是的,我查看了其他文章和Firebase价格页面,人们也提到了这一点。https://dev59.com/ZFcQ5IYBdhLWcg3wCvc4#43645498 我会在测试后立即为您的评论点赞。非常感谢。 - Ryohei
@NickFelker 你是对的。在我切换到付费计划之后,它就工作了。非常感谢。 - Ryohei
1个回答

1
由于网络问题,我遇到了这个错误。连接后解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接