获取 TypeError:从物理设备 POST 到我的节点服务器时网络请求失败
Posted
技术标签:
【中文标题】获取 TypeError:从物理设备 POST 到我的节点服务器时网络请求失败【英文标题】:Getting TypeError: Network request failed while POSTing to my node server from Physical Device 【发布时间】:2021-11-03 11:05:39 【问题描述】:我想要什么:
在注册时将一些凭据发布到我的节点服务器并将用户保存在 MongoDB 中怎么了:
TypeError:来自 React Native 的 POST 请求的网络请求失败我做了什么:
将本地主机更改为我机器的 IP 在 android Manifest 中添加 android:usesCleartextTraffic="true" 使用 ngork 生成的 IP 使用 POSTMAN 检查了我的服务器代码,它工作正常!React Native 代码:
POST 请求:
fetch('http://MY_MACHINE_IPv4:3001/signup',
method: 'POST',
headers:
Accept: 'application/json',
'Content-Type': 'application/json',
,
body: JSON.stringify(
fullName: fullName,
email: email,
phone: phone,
password: pass,
),
)
.then(response => response.json())
.then(data => console.log(data));
节点代码:
router.post("/signup", async (req, res) =>
const fullName, email, phone, password = req.body
console.log("The Email in request is ", email)
console.log("The Password in request is ", password)
try
const user = new User( fullName, email, phone, password )
console.log("USER BEING SAVED")
await user.save()
const token = jwt.sign( userId: user._id , jwtKey)
res.send( token: token )
catch (err)
res.status(422).send(err.message)
)
错误:
WARN 可能的未处理 Promise Rejection (id: 0): TypeError:网络请求失败 TypeError:网络请求失败 在匿名(http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:25389:33) 申请时(本机) 在匿名(http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:29526:26) 在 _callTimer (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:29446:17) 在 callTimers (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:29647:19) 申请时(本机) 在 __callFunction (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:6319:36) 在匿名(http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:6043:31) 在 __guard (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:6270:15) 在 callFunctionReturnFlushedQueue (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.healthapp&modulesOnly=false&runModule=true:6042:21)
【问题讨论】:
【参考方案1】:如果您使用的是 android 模拟器,Android 模拟器总是在标头上发送 charset: utf-8。所以您需要更改 nginx 设置以允许该附加标头
【讨论】:
我在标题中写了我正在使用物理设备。以上是关于获取 TypeError:从物理设备 POST 到我的节点服务器时网络请求失败的主要内容,如果未能解决你的问题,请参考以下文章
php curl post 获取数据接口 同步局域网 人脸识别设备数据
这是不是可以从 xcode 将 iphone 应用程序运行到 ipad 物理设备中?
jQuery Post blob 对象给出 Uncaught TypeError: Illegal invocation