【问题标题】:expo-barcode-scanner not working always gives this error " TypeError: null is not an object (evaluating 'NativeUnimoduleProxy.viewManagersNames')"expo-barcode-scanner 不工作总是给出这个错误“TypeError: null is not an object (evalating 'NativeUnimoduleProxy.viewManagersNames')”
【发布时间】:2022-07-21 00:12:02
【问题描述】:

另一个错误是“[TypeError: undefined is not an object (evalating '_$$_REQUIRE(_dependencyMap[5], "expo-barcode-scanner").BarCodeScanner')]” 我认为问题在于许可。 android中的权限对话框未打开。我尝试了很多解决方案,但没有任何问题。

interface ScanScreenProps {
    navigation:any;
}
const Scan: React.FunctionComponent<ScanScreenProps> = (props) => {
    const [loading, setLoading] = useState(true);
    const [scanData, setScanData] = useState<IQRCodePayload>();
    const [permission, setPermission] = useState(true);

    useEffect(() => {
        requestCameraPermission();
    }, []);

    const requestCameraPermission =() => {
        (async () => {
        try {
            const { status, granted } = await BarCodeScanner.requestPermissionsAsync();
            console.log(`Status: ${status}, Granted: ${granted}`);

            if (status === 'granted') {
                console.log('Access granted');
                setPermission(true);
            } else {
                setPermission(false);
            }
        } catch (error) {
            console.error(error);
            setPermission(false);
        } finally {
            setLoading(false);
        }
        })()
    };

    if (loading) return <Text>Requesting permission ...</Text>;

    if (scanData) {
        return (
            <>
                <Text style={styles.text}>Name: {scanData.name}</Text>
                <Text style={styles.text}>Number: {scanData.number}</Text>
                <Button title="Scan Again" onPress={() => setScanData(undefined)}>
                    Scan Again
                </Button>
            </>
        );
    }

    if (permission) {
        return (
            <BarCodeScanner
                style={[styles.container]}
                onBarCodeScanned={({ type, data }) => {
                    try {
                        console.log(type);
                        console.log(data);
                        let _data = JSON.parse(data);
                        setScanData(_data);
                    } catch (error) {
                        console.error('Unable to parse string: ', error);
                    }
                }}
            >
                <Text style={styles.text}>Scan the QR code.</Text>
            </BarCodeScanner>
        );
    } else {
        return <Text style={styles.textError}>Permission rejected.</Text>;
    }
};

export default Scan;

【问题讨论】:

  • 错误已解决。问题在于依赖兼容性

标签: android react-native expo barcode-scanner


【解决方案1】:

我遇到了同样的错误,我该如何解决?

【讨论】:

猜你喜欢
  • 2022-10-02
  • 1970-01-01
  • 2020-08-15
  • 2021-06-16
  • 2022-11-01
  • 2022-09-25
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
相关资源
最近更新 更多