fetch 和 axios 在 PlaidLink 组件中不工作,我该如何解决这个问题?

fetch and axios are not working inside PlaidLink component, how can I fix this?

我正在尝试从 <PlaidLink /> 组件 onSuccess 道具中向我的后端发出一个简单的 POST 请求。但是,使用 fetch 时,我收到一条奇怪的警告:

Require cycle: node_modules/react-native-plaid-link-sdk/node_modules/react-native/Libraries/Network/fetch.js -> node_modules/react-native-plaid-link-sdk/node_modules/react-native/Libraries/Network/fetch.js

而且我还收到一条错误消息:

TypeError: undefined is not a function (near '...fetch...')

这怎么可能? fetch 显然是一个函数,因为它是 react native API 的一部分。当我尝试在 onSuccess 道具中使用 fetch 时,我只会收到此错误。 fetch 在我的应用程序的其他地方工作得很好。

我也尝试过使用 axios,因为我认为库中可能会发生一些奇怪的 import/name 冲突。但是 axios 甚至不会发出 HTTP 请求。它什么都不做。同样,axios 在我的代码库中的其他地方工作得很好,只是在 onSuccess 内部我遇到了问题。我该如何解决?下面是我的组件和代码。

const PlaidComponent = (props) => {
  return (
<PlaidLink
      tokenConfig={{
        token: props.token,
      }}
 onSuccess={(success) => {
    fetch(API_URL + '/plaidPermanentToken', {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        value: success.publicToken,
      }),
    })
    .then((response) => {
      console.log('Token exchange complete');
      console.log(response);
    })
  }}>
      <View style={styles.button}>
        <Text style={styles.textStyle}>Add Account</Text>
      </View>
</PlaidLink>
 );
};

经过多次排查,我发现问题与使用 YARN 作为我的依赖管理工具有关。

我切换到 NPM,现在 Plaid SDK 可以完美运行。

为此,请从项目根目录中删除“node_modules”文件夹和“yarn.lock”文件。不要触摸“package.json”。 运行 npm install 从根目录中的终端。现在,应用程序应该按预期执行,没有任何关于要求周期的警告。