gpt4 book ai didi

python - 我在 Heroku 上收到 404 错误,但它在本地有效

转载 作者:行者123 更新时间:2023-12-04 17:26:31 25 4
gpt4 key购买 nike

我的应用程序在本地运行(在终端中本地运行 Heroku 时),具有正确的路由。但是,当我移至 Heroku 服务器时,该应用程序构建良好,但当我进入该应用程序时仅显示 404 错误。无论我进入哪个页面,Heroku.logs 都会返回类似这样的内容。

2020-07-16T17:24:44.233685+00:00 heroku[router]: at=info method=GET path="/" host=advancedmatchedbetting.herokuapp.com request_id=315ee036-cb58-4493-9b46-c2a25337070e fwd="176.250.1.224" dyno=web.1 connect=1ms service=3ms status=404 bytes=400 protocol=https

为了保持简洁,我会尽可能少地编写我认为需要的代码,如果还有更多对您有用的代码,请告诉我,我也会把它放上来。 git commit/push/add 都是最新的。

简介

web: cd api && export APP_SETTINGS=config.cfg && gunicorn wsgi:app --log-file -

wsgi.py

from application.__init__ import create_app

app = create_app()

if __name__ == "__main__":
app.run()

初始化.py

db = SQLAlchemy()

def create_app():
app = Flask(__name__, static_folder='/Users/ianholdroyd/Documents/GitHub/advancedmatchedbetting_react/build', static_url_path='/')
db.init_app(app)
app.config.from_envvar('APP_SETTINGS')
with app.app_context():
from . import routes
db.create_all()
return app

路线.py

@app.route('/')
def index():
return app.send_static_file('index.html')

@app.route('/api/signup', methods=['POST'])
def signup():
data = request.get_json()
new_user = newsletter(
first_name=data['firstName'],
last_name=data['lastName'],
email= data['email'],
created=dt.now()
)
db.session.add(new_user) # Adds new User record to database
db.session.commit()
return("")

配置文件

SECRET_KEY = ****
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///static/site.db'

应用程序.js

function App() {

return (
<Router>
<Switch>
<Route exact path="/" component={homepage} />
<Route exact path = "/404" component={NotFoundPage} />
<Route exact path="/calculator/" component={Calculator} />
<Route exact path="/blogpost/:id" component={blogpostpage} />
<Route exact path="/signup" component={signuppage} />
<Redirect to="/404"/>
</Switch>
</Router>
);
}


export default App;

最佳答案

终于解决了这个问题。以防其他人需要帮助。

这有一些问题。我首先通过将我的路线更改为此设法允许在本地版本上导航:

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return app.send_static_file('index.html')

@app.errorhandler(404)
def not_found(e):
return app.send_static_file('index.html')

然后另一个问题是我将静态文件夹声明为笔记本电脑中的静态文件夹,而不是相关文件夹。我将 init.py 更改为此解决了问题:

app = Flask(__name__, static_folder=os.path.abspath("../build"), static_url_path='/')

我认为所有这些痛苦都可以通过使用像 Nginx 这样的东西来避免,但我无法完全理解它,所以现在这将作为一种解决方法!

关于python - 我在 Heroku 上收到 404 错误,但它在本地有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62940458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com