我正在开发模式下运行 Android Expo Go 应用程序,该应用程序似乎可以在以下位置使用:
› 选择一个应用程序来打开您的项目 http://192.168.0.49:8081/_expo/loading › 地铁等待 exp://192.168.0.49:8081 › 使用 Expo Go 扫描上面的二维码 (Android) 或相机应用程序 (iOS)
› 网络正在等待 http://localhost:8081
我正在尝试让应用程序与 Flask 后端 API 进行通信:
$ flask --app backend run
* Serving Flask app 'backend'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
如果我直接检查正在运行 Expo Go 应用程序的移动设备的 IP,则会显示:
192.168.0.50
我运行flask服务器的机器的IP是:
IPv4 地址。 。 。 。 。 。 。 。 。 。 。 : 192.168.0.49
但是当我尝试从 expo 应用程序向 Flask 服务器执行 GET 请求时,出现网络错误:
ERROR 测试错误:[TypeError:网络请求失败]
我的用于执行测试 API ping 的 expo tsx 代码如下所示:
const testFetch = async () => {
try {
const response = await fetch('http://192.168.0.49:5000/test');
const data = await response.json();
console.log('Test response data:', data);
} catch (error) {
console.error('Test error:', error);
}
};
useEffect(() => {
testFetch();
}, []);
这会调用烧瓶代码:
@bp.route('/test', methods=['GET'])
def test():
return jsonify({"message": "Test successful"}), 200
...并且 Flask 应用程序设置为使用 CORS 接收传入请求:
import os
from flask import Flask
from flask_cors import CORS
def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
CORS(app, resources={r"/*": {"origins": "*"}})
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
from . import home
app.register_blueprint(home.bp)
return app
flask --app backend run --host=0.0.0.0 --port=5000 --debug
curl http://192.168.0.49:5000/fetchprogram?programID=test_program
事实证明,这是一个问题,我从 WSL2 内部运行 Flask 服务器,并且它不与 Windows 本地主机 IP 共享直接 IP 地址通信路径。
按照本文中的简单说明解决了这个问题:https://www.reddit.com/r/bashonubuntuonwindows/comments/zl57wt/cant_connect_or_ping_wsl_from_host/