from flask import Flask, jsonify, send_from_directory from flask_cors import CORS import logging import os app = Flask(__name__) # 配置静态文件目录为dist # 说明:这里指向后端目录中的 dist(前端构建产物应复制或输出到此) dist_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'dist')) app.static_folder = dist_dir # 为 SPA 提供静态文件与回退到 index.html 的路由 @app.route('/') def serve_index(): # 返回构建后的前端入口文件 return send_from_directory(app.static_folder, 'index.html') @app.route('/') def serve_static_or_fallback(path): # 如果请求的文件存在则直接返回,否则回退到 index.html(用于前端路由) file_path = os.path.join(app.static_folder, path) if os.path.isfile(file_path): return send_from_directory(app.static_folder, path) return send_from_directory(app.static_folder, 'index.html') CORS(app) # 允许跨域访问 # 配置日志 # 确保logs目录存在 logs_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'handlers', 'Rankings', 'logs') os.makedirs(logs_dir, exist_ok=True) logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler(os.path.join(logs_dir, 'app.log'), encoding='utf-8'), logging.StreamHandler() ] ) # 导入并注册蓝图 from routers.rank_api_routes import rank_bp from routers.article_routes import article_bp app.register_blueprint(rank_bp) app.register_blueprint(article_bp) if __name__ == '__main__': print("启动主程序服务...") print("服务地址: http://localhost:8443") app.run(host='0.0.0.0', port=8443, debug=True)