我可以在本地运行Express / React应用,而不会出现Stripe错误,并且可以在测试模式下成功付款,但是在Heroku上,单击按钮时会出现此错误:You did not set a valid publishable key. Call Stripe.setStripePublishableKey() with your publishable key.
这是我的设置:>
在heroku中,我将我的密钥添加为config vars
在 config / dev.js 中,我将所有键设置为字符串
在 config / prod.js 中:
module.exports = {
googleClientID: process.env.GOOGLE_CLIENT_ID,
googleClientSecret: process.env.GOOGLE_CLIENT_SECRET,
mongoURI: process.env.MONGO_URI,
cookieKey: process.env.COOKIE_KEY,
stripePublishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
stripeSecretKey: process.env.STRIPE_SECRET_KEY
};
在 client / src / components / Payments.js
中import React, {Component} from 'react';
import StripeCheckout from 'react-stripe-checkout';
import { connect } from 'react-redux';
import * as actions from '../actions';
class Payments extends Component {
render() {
return (
<StripeCheckout
name="Emaily"
description="Add $5 for 5 email credits"
amount={ 500 }
token={ token => this.props.handleToken(token) }
stripeKey={ process.env.REACT_APP_STRIPE_KEY }
>
<button className="btn">
Add Credits
</button>
</StripeCheckout>
);
}
}
export default connect(null, actions)(Payments);
创建React App要求我使用REACT_APP_STRIPE_KEY而不是stripePublishableKey或STRIPE_PUBLISHABLE_KEY,并且我尝试将其环境变量更改为无效。有任何想法吗?
答案 0 :(得分:0)
在从.gitignore文件中删除.env.production之前,我遇到了同样的问题。根据React Docs: Env Links and CRA
.env文件应检入源代码管理(不包括.env * .local)。
我意识到我的开发环境正在正常运行,因为.env.development和.env.production文件已由CRA编译为bundle.js。如果您在.gitignore中包含这些内容,heroku将无法找到它们。希望这可以帮助!