Headless CMS如何与React集成时解决预渲染和API调用冲突?
我在用Gatsby和Strapi搭建Headless CMS站点时遇到问题,页面预渲染时报401认证错误。虽然开发环境用wrapPageElement处理了JWT,但构建时静态生成还是会直接调用API原地址…
尝试在gatsby-node.js里这样改过:
exports.onPreInit = () => {
process.env.API_URL = process.env.NODE_ENV === 'production'
? 'https://api.example.com'
: 'http://localhost:1337';
};
但构建时依然提示”Unauthorized”,感觉生产环境没有正确带上Bearer token,应该怎样让预渲染阶段正常调用认证后的API?
记得在服务器上配置好STRAPI_TOKEN,本地和生产环境都能用。别忘了重启服务,环境变量要重新加载。
解决办法是把JWT写到
gatsby-config.js里,通过环境变量注入:然后在
.env.production文件里设置你的生产环境API地址和token:接下来修改你的API请求函数,确保构建时能带上认证头:
这样就能保证在预渲染阶段正确带上认证信息了。记得不要把敏感的token提交到代码库,.env文件要加到
.gitignore里。