Javascript .env文件访问令牌适用于API,但不适用于Next.js中的另一个
我正在调用两个数据库——WordsAPI和SpotifyAPI。对于每个DB,都有一个访问令牌/DB密钥,这两个令牌都存储在Javascript .env文件访问令牌适用于API,但不适用于Next.js中的另一个,javascript,reactjs,environment-variables,spotify,next,Javascript,Reactjs,Environment Variables,Spotify,Next,我正在调用两个数据库——WordsAPI和SpotifyAPI。对于每个DB,都有一个访问令牌/DB密钥,这两个令牌都存储在.env文件中 我在getStaticProps中以相同的方式获取数据,它对WordsAPI来说运行良好,但对Spotify来说不起作用。在《邮递员》中,Spotify工作得很好 以下是电话: export async function getStaticProps(context) { const wordsRes = await fetch( `https:
.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文件根本不起作用的,这里不是这样。如果您
console.log(process.env.NEXT\u PUBLIC\u SPOTIFY\u ACCESS\u TOKEN)
它是否显示了正确的令牌?它记录了未定义的
您是否在使用.env
的所有实验过程中重新启动了服务器?您可以记录所有的env变量并使用以下代码段进行检查:对象.keys(k=>console.log(`->${k}=${process env[k]}')
@Rostyslav没有,刚重新启动,现在可以工作了。谢谢奥卡姆又在用剃刀咬我的屁股了。