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: image

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)

Most upvoted comments

#17846

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”