expo: expo-camera crash when is used in web
Minimal reproducible example
https://github.com/whollacsek/camera-crash
Summary
Expo camera works on Android device but not on web.
The minimal repro is created with create-expo-app using expo-camera and react-native-web. Then I added a component that uses <Camera>, it crash on web with Invalid hook call error:
The component that uses <Camera>:
import {
Camera, CameraType,
PermissionStatus,
} from "expo-camera";
import { useEffect, useState } from "react";
import { Text } from "react-native";
export default function Recording() {
const [cameraPermission, setCameraPermission] = useState(
PermissionStatus.UNDETERMINED
);
const getPermission = async () => {
const response =
await Camera.requestCameraPermissionsAsync();
setCameraPermission(response.status);
};
useEffect(() => {
getPermission();
}, []);
if (cameraPermission === PermissionStatus.UNDETERMINED) {
return <Text>Requesting camera permission</Text>;
} else if (cameraPermission === PermissionStatus.GRANTED) {
return <Camera type={CameraType.front} style={{width: '100%', height: '100%'}}/>;
} else {
return <Text>No access to camera</Text>;
}
}
Environment
expo-env-info 1.0.5 environment info: System: OS: macOS 13.3.1 Shell: 5.9 - /bin/zsh Binaries: Node: 18.8.0 - /opt/homebrew/bin/node Yarn: 1.22.19 - /opt/homebrew/bin/yarn npm: 8.18.0 - /opt/homebrew/bin/npm Managers: CocoaPods: 1.12.1 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4 IDEs: Android Studio: Flamingo 2022.2.1 Patch 1 Flamingo 2022.2.1 Patch 1 Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild npmPackages: @expo/webpack-config: ^18.0.1 => 18.1.0 expo: ~48.0.19 => 48.0.19 react: 18.2.0 => 18.2.0 react-native: 0.71.8 => 0.71.8 react-native-web: ~0.18.10 => 0.18.12 Expo Workflow: managed
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 15 (4 by maintainers)
How have you fixed this with yarn?
I get this error only since I upgraded to SDK49. I had no issues prior to this.
Web Bundling failed 7704ms Unable to resolve “@koale/useworker” from “node_modules/expo-camera/build/useWebQRScanner.js”