小编Mit*_*lie的帖子

CORS 错误,但无论如何都会获取数据

我有一个生成的 React 站点,我托管在 S3 存储桶中。我的一个组件在加载时尝试获取一些东西:

require('isomorphic-fetch')
...

componentDidMount() {
  fetch(`${url}`)
    .then(res => {
      console.log(res);
      this.setState({
        users: res
      })
    })
    .catch(e => {
      // do nothing
    })
}
Run Code Online (Sandbox Code Playgroud)

url我取是AWS API网关。我通过下拉菜单在那里启用了 CORS,对默认配置没有任何更改。

在我的控制台中,对于远程站点和开发过程中的本地站点,我看到:

“加载失败url:请求的资源上不存在‘Access-Control-Allow-Origin’标头。” 等等

但是,在 Chrome 网络选项卡中,我可以看到请求和响应,状态为 200 等。但是,在控制台中, myconsole.logthis.setState永远不会被调用。

我知道 CORS 是一个常见的痛点,很多问题都涉及到 CORS。我的问题:为什么响应在“网络”选项卡中没有显示错误,而同时在控制台中出现错误?

javascript cors aws-api-gateway fetch-api

6
推荐指数
1
解决办法
3159
查看次数

监视递归 Angular 控制器方法

我有一个递归方法,如果设置了标志,它将每五秒调用一次。我正在尝试编写一个测试来监视该方法,调用它,等待六秒钟,然后期望该方法被调用两次。我的测试失败了,因为间谍报告该方法仅被调用一次(初始调用)。

我正在使用Angular 风格指南,所以我将这些方法附加到this. 我怀疑从 angular-mocks 返回的控制器的范围可能存在问题$controller(),但我不确定 - 大多数人都将方法附加到$scope.

如果不将方法附加到$scope,我如何创建一个间谍来验证我的方法已被调用两次?

应用程序.js:

'use strict';

angular
    .module('MyApp', [
        //...
    ]);

angular
    .module('MyApp')
    .controller('MyController', MyController);

MyController.$inject = [
    //...
];

function MyController() {
    var vm = this;

    vm.callMyself = callMyself;
    vm.flag = false;

    function callMyself () {
        console.log('callMyself');
        if (vm.flag) {
            console.log('callMyself & flag');
            setTimeout(vm.callMyself, 5000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

appSpec.js:

describe('MyController', function () {

    var $scope;

    beforeEach(function () {
        module('MyApp');
    });

    beforeEach(inject(function($rootScope, $controller) { …
Run Code Online (Sandbox Code Playgroud)

javascript recursion jasmine angularjs

4
推荐指数
1
解决办法
734
查看次数