Node.js向EJS模板传递stripePublickey触发ReferenceError如何解决
问题根源
你出现报错的核心原因是服务端传递的变量名和EJS模板中引用的变量名大小写不匹配:
- 服务端
res.render方法中传递的参数键名为stripePublickey(末尾key的首字母k为小写) - EJS模板中引用的变量名为
stripePublicKey(末尾key的首字母K为大写)
EJS模板对变量名大小写敏感,无法匹配到对应变量就会抛出引用错误。
解决方案
任选一种方式统一变量名即可:
方案1:修改服务端传参键名
将服务端传递的参数键名调整为和模板引用一致的大写格式:
const stripePublickey = process.env.STRIPE_PUBLIC_KEY res.render('pricing.ejs', { stripePublicKey: stripePublickey, items: JSON.parse(data) })
方案2:修改EJS模板引用的变量名
将模板中引用的变量名调整为和服务端传参一致的小写格式:
<script> var stripePublicKey = '<%= stripePublickey %>' </script>
额外提醒:修复变量名问题后可以顺带检查
process.env.STRIPE_PUBLIC_KEY是否正常读取到了有效值,避免后续调用Stripe接口时出现异常。
内容的提问来源于stack exchange,提问作者jeril
相关产品推荐
相关产品推荐

