Reactjs 放大反应本机-使用放大添加api时出现重复错误

Reactjs 放大反应本机-使用放大添加api时出现重复错误,reactjs,react-native,react-native-ios,aws-amplify,Reactjs,React Native,React Native Ios,Aws Amplify,我正在使用这个放大指南,当我使用“aplify add API”创建API时,应用程序失败。 我正在使用“expo”和IphoneX进行测试阶段 我的应用程序代码是 import React, { Component } from 'react'; import { StyleSheet, Text, Button, View, Alert } from 'react-native'; import Amplify, { API } from 'aws-amplify'; import ampl

我正在使用这个放大指南,当我使用“aplify add API”创建API时,应用程序失败。 我正在使用“expo”和IphoneX进行测试阶段

我的应用程序代码是

import React, { Component } from 'react';
import { StyleSheet, Text, Button, View, Alert } from 'react-native';
import Amplify, { API } from 'aws-amplify';
import amplify from './aws-exports';
import awsmobile from './aws-exports';
import { withAuthenticator } from 'aws-amplify-react-native';

Amplify.configure(amplify);
Amplify.configure(awsmobile);

state = { apiResponse: null };

class App extends Component {


  async getSample() {
    const path = "/items"; // you can specify the path
     const apiResponse = await API.get("theListApi" , path); //replace the API name
     console.log('response:' + apiResponse);
     this.setState({ apiResponse });
   }


  render() { 
    return (
      <View style={styles.container}>
      <Text>test</Text>

      <Button title="Send Request" onPress={this.getSample.bind(this)} />
    <Text>Response: {this.state.apiResponse && JSON.stringify(this.state.apiResponse)}</Text>

    </View>
    );
  }
}

export default withAuthenticator(App);

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#63C8F1',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

怎么了?如何正确使用API?

Amplify在
Amplify/#current cloud backend/
中创建当前云后端配置的副本

你不需要这些文件来构建你的应用程序,所以你可以忽略它们来消除错误

为此,您可以创建一个黑名单并将文件夹添加到其中。 在项目的根目录中创建一个
rn cli.config.js
文件

/rn cli.config.js

//适用于较旧的本机版本
//const blacklist=require('metro')。createBlacklist;
const blacklist=require('metro-config/src/defaults/blacklist');
module.exports={
解析程序:{
黑名单:黑名单([/#当前云后端\/.*/]),
},
};

打字脚本注意事项: (如穆什的回答所述)


如果您使用的是typescript,则应在上创建黑名单
metro.config.js
rn cli.config.js

module.exports = {
  resolver: {
    blacklistRE: /#current-cloud-backend\/.*/
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};
module.exports = {
  resolver: {
    blacklistRE: /#current-cloud-backend\/.*/
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};
如上所述


如果您使用的是typescript,您应该在
metro.config.js
而不是
rn cli.config.js
上创建黑名单

module.exports = {
  resolver: {
    blacklistRE: /#current-cloud-backend\/.*/
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};
module.exports = {
  resolver: {
    blacklistRE: /#current-cloud-backend\/.*/
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};

如上所述。

我遇到了这个问题,必须创建
/rn cli.config.js
,其中包含以下内容,因为黑名单位于不同的文件夹中:

const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
  resolver: {
    blacklistRE: blacklist([/#current-cloud-backend\/.*/]),
  },
};

在更新到Expo SDK41后,此问题又出现了。 我需要将以前的
rn cli.config.js
更改为
metro.config.js
(即使我没有使用TS),并作为devDependency安装
@expo/metro config

2021 在Metro v0.64.0中,黑名单被重命名为区块名单

我当前的解决方案是编辑
metro.config.js
(或创建一个新的),并添加以下内容

const exclusionList  = require('metro-config/src/defaults/exclusionList');

module.exports = {
  resolver: {
    blacklistRE: exclusionList([/amplify\/#current-cloud-backend\/.*/]),
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};

此metro.config.js文件位于何处?@CevinThomas my metro.config.js位于项目的根目录下。您是如何在项目的根目录下获取该metro.config的。它是不是安装了一些特定的东西?我根本没有这个配置@Mush@CevinThomas如果你没有
metro.config.js
你可以在你的项目根目录下创建它。对于一个带有
“@expo/metro-config”的托管expo项目@SDKv40,只需解析器部分就足够了:我的devdependences中还有“最新的”
,它对我很有用,谢谢