.env文件访问令牌适用于API,但不适用于Next.js中的另一个



我正在调用两个DB——WordsAPI和Spotify API。对于每个DB,都有一个访问令牌/DB密钥,这两个密钥我都存储在一个.env文件中。

我在getStaticProps中以相同的方式获取数据,它对WordsAPI很好,但对Spotify不好。在《邮差》中,Spotify运行得很好。

以下是电话:

export async function getStaticProps(context) {
const wordsRes = await fetch(
`https://wordsapiv1.p.rapidapi.com/words/${context.params.word}/definitions`,
{
method: "GET",
headers: {
"x-rapidapi-key": process.env.NEXT_PUBLIC_DB_KEY,
"x-rapidapi-host": "wordsapiv1.p.rapidapi.com",
},
}
)
.then((response) => {
return response;
})
.catch((err) => {
console.error(err);
});
const songsRes = await fetch(
`https://api.spotify.com/v1/search?q=${context.params.word}&type=track`,
{
method: "GET",
headers: {
authorization: "Bearer " + process.env.NEXT_PUBLIC_SPOTIFY_ACCESS_TOKEN,
},
}
)
.then((response) => {
return response;
})
.catch((err) => {
console.error(err);
});
const wordsData = await wordsRes.json();
const songsData = await songsRes.json();
return {
props: {
wordsData,
songsData,
},
};
}

.env文件简单如下:

NEXT_PUBLIC_SPOTIFY_ACCESS_TOKEN=BQDcgHT2IfAXsXXX_XXX_XXX
NEXT_PUBLIC_DB_KEY=a2c92537d6mshXXX

我听说把密钥放在文件底部而不加一行可能会把它搞砸,但切换它们并没有改变任何事情。我也尝试过在每个文件中切换到字符串格式、将头键切换到"authorization"、使用字符串插值等各种组合。我还尝试过将我的文件命名为.env.local(建议用于Next.js(,但都不起作用。

SO上的大多数解决方案似乎都是关于.env文件根本不起作用的,但这里的情况并非如此。

我已经查看了代码,总体来说一切都很好。我相信,如果您在创建新文件时重新启动服务器,会有所帮助。请尝试重新启动服务器。它应该起作用。

最新更新