在反应本机 ios 应用程序中使用超级代理时出错

Posted

技术标签:

【中文标题】在反应本机 ios 应用程序中使用超级代理时出错【英文标题】:Error while using superagent in react native ios app 【发布时间】:2016-08-09 08:44:47 【问题描述】:

我已经制作了一个使用 nodejs 和 express 作为后端的 react native 应用程序,启用了 cors 并且在 android 上运行但是当我开始为 ios 移植应用程序并在模拟器 iphone 6 中运行它时,它运行良好,但是当它来打一个 api 因为我使用 superagent 给我这个错误。

Error: Request has been terminated
Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.
    at Request.crossDomainError (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80241:9)
    at XMLHttpRequest.xhr.onreadystatechange (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80311:13)
    at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:10000:15)
    at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26063:6)
    at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25917:6)
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26011:52
    at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:9233:23)
    at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7213:34)
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7104:8
    at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7050:1)

这就是我使用超级代理的方式

const request = require('superagent');

const req = request[options.method.toLowerCase()](options.uri)
        .set(merge(, options.headers, options.json ? 'Content-Type': 'application/json' : ))
        .query(options.qs ? options.qs : )
        .send(options.json || options.form || options.formData)
      ;
      const requestId = ;

      api.activeRequests.add(requestId);
      return new Promise((resolve, reject) => 
        req.end((err, res) => 
          console.log(err, res);
          api.activeRequests.delete(requestId);
          if (err || !res.ok) 
            console.log(res);
            const error = res ? (res.body ? res.body : res) : err;
            reject(error);
           else 
            resolve(res.body);
          
        );
      );

需要帮助!

【问题讨论】:

请创建一个MVCE,否则我们似乎不可能帮助您处理您单独发布的信息。 您需要哪些确切信息? 把自己放在试图回答你问题的人的位置上。您可以向他们提供的详细信息越多,他们最容易为您提供帮助。例如,你添加了一小段代码,但它是单独编译的,是 MVCE 吗?您忽略了您使用的软件、哪些版本、哪些平台的重要细节? ...细节很重要。 【参考方案1】:

这是由于 https 请求而不是 http 发布的。所以到目前为止,因为我处于开发者模式,所以允许 http 访问我的特定域。

【讨论】:

以上是关于在反应本机 ios 应用程序中使用超级代理时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用打字稿配置本机反应时出错

在 Web 平台上使用异步存储运行反应本机项目时出错

运行反应本机应用程序时出错-检查`App`的渲染方法

尝试启动反应本机应用程序时出错

如何从 iOS 传递信息以在启动时做出本机反应?

尝试安装本机反应时出错,运行 pod install 时无法正确构建