Reactjs 放大反应本机-使用放大添加api时出现重复错误
我正在使用这个放大指南,当我使用“aplify add API”创建API时,应用程序失败。 我正在使用“expo”和IphoneX进行测试阶段 我的应用程序代码是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
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中还有“最新的”
,它对我很有用,谢谢