Node.js react native won';无法在仿真器上本地获取

Node.js react native won';无法在仿真器上本地获取,node.js,react-native,Node.js,React Native,我在iOS和Android上有问题。我正在使用以下代码: fetch('https://192.168.0.143:3000/auth/signin').then(() => console.log('ok')).catch(error => console.log(error)); 这当然是简化了,但你会明白的 这不起作用,我收到了一个“网络请求失败”的错误。当我在《邮递员》中测试它时,它起作用了!也适用于postman(192.168.0.143是我的本地IP),但不适用于re

我在iOS和Android上有问题。我正在使用以下代码:

fetch('https://192.168.0.143:3000/auth/signin').then(() => console.log('ok')).catch(error => console.log(error));
这当然是简化了,但你会明白的

这不起作用,我收到了一个“网络请求失败”的错误。当我在《邮递员》中测试它时,它起作用了!也适用于postman(192.168.0.143是我的本地IP),但不适用于react native fetch

我已经创建了一个自签名密钥,我的node js服务器代码如下:

https.createServer({
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.cert')
}, app).listen(3000,
() => console.log('listening...'))
server.key和server.cert都在app.js(nodejs)所在的文件夹中。服务器正在运行

我的自签名证书有问题吗?或者我可以在哪里找到我的问题

编辑

我已经创建了node.js脚本的一个新部分:

const test = (req, res) => {
    res.status(200).send('OK').end()
}
app.get('/test', test)

所以当我在ios模拟器上访问safari时,我看到“OK”。但是我的应用程序中的网络请求仍然失败。我认为这与我的自签名证书有关,但我不知道确切的问题。

您可以检查的第一件事是,测试ping本地服务器
https://192.168.0.143:3000
从模拟器/物理设备。你将从那里得到回应

在iOS上,您可能需要在info.plist上显示以下内容

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>localhost</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

您是否使用express处理https流量?无需('https')当我在ios模拟器上的safari上转到“”时,我看到“无法获取/auth/sign”,因此有一个响应。但是fetch()总是失败。顺便说一句,NSAppTransportSecurity已经在我的info.plist文件中了,但它仍然不能工作。没有?您不应该获取“无法获取/auth/sign”。相反,当您触发GETAPI时,您的预期响应应该显示在网站上。无论您的
res.send()
在本地服务器上编码了什么,都应该显示在您的网站上。此外,请确保您的本地模拟服务器在终端上运行。因为您使用的是node.js。。应该是
nodemon app.js
(如果您没有使用app.js作为入口点,请将app.js更改为任何文件)我已经编辑了我的问题。我添加了一些新代码来测试连接。顺便说一句,安装了nodemon后,它也不工作(同样的错误)。在我的情况下,不涉及自签名证书。您需要使用我共享的命令运行模拟服务器。。终端应在端口3000上保持运行。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system"/>
            <certificates src="user"/>
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">YOUR IP ADDRESS</domain>
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">127.0.0.1</domain>
        <!-- Modify the to your local IP address to allow app deployment on Android Pie -->
    </domain-config>
</network-security-config>