我在 Netlify 上构建的 NextJS 由于秘密环境变量而失败。
我的应用程序与 Spotify API 交互。我需要为 Spotify 和 NextAuth 设置机密。
这些变量是在 Netlify 上创建的并标记为秘密。
我的代码仅在几个地方通过如下变量引用它们,它们从未被硬编码。在我本地,这些变量位于 .env 文件中,而在 Netliffy 上,它们在控制面板上设置。
clientId: process.env.SPOTIFY_CLIENT_ID!,
clientSecret: process.env.SPOTIFY_CLIENT_SECRET!,
secret: process.env.NEXTAUTH_SECRET,
构建中的错误如下所示:
秘密扫描在构建输出或存储库代码中发现了 97 个秘密实例。检测到秘密环境变量“SPOTIFY_CLIENT_SECRET”的值
我对其进行了试验并在本地运行了构建。然后我在 .next 文件夹中搜索这些键的值,发现该值在 6 个文件中出现了 8 次。但我不知道这些文件是否可以公开访问。这些是文件:
/.next/required-server-files.json
/.next/standalone/.next/required-server-files.json
/.next/server/app/api/auth/[...nextauth]/route.js
/.next/standalone/.next/server/app/api/auth/[...nextauth]/route.js
/.next/standalone/.env
/.next/standalone/server.js
所以我的两个问题是:
以上文件可以公开访问吗?
Netlify 有关于我们可以使用的某些变量的文档,因此这些秘密变量将被忽略。但将它们设置为秘密然后忽略它们有什么意义呢?我为什么要费心将它们设置为秘密呢?`
我希望我的秘密变量保持秘密。
简短回答:清除 Netlify 缓存并查看解决方案
长答案:可能发生的情况是,您在 Netlify 中定义秘密环境变量之前将代码推送到 git。因此,Netlify 在定义 Secret 变量之前构建并缓存了对它们的引用。重建时,Netlify 认为它在 git 代码中找到了对秘密变量的引用。
解决方案:Netlify 项目 > 已发布部署 > 重试或选项 > 清除缓存并使用最新分支重试提交