испарение.js не отправляет to_sign с мобильного устройства

Я работаю над приложением, в котором есть веб-компоненты и компоненты пользовательского интерфейса для мобильных устройств. Мы используем испарение.js для вызова конечной точки, которая будет возвращать предварительно подписанный URL-адрес для загрузки фрагментов в корзины aws. Эта концепция работает при использовании из реакции и отправляет параметр строки запроса to_sign для создания предварительно подписанного URL-адреса. По какой-то причине, когда этот код запускается из react native, значение строки запроса to_sign не передается в конечную точку. Что могло бы заблокировать передачу параметра to_sign из испарения, этот же код работает для приложения реакции? Вот код, который мы вызываем из react native:

      const uploader = Evaporate.create({
    signerUrl: config.SIGNER_URL,
    aws_key: config.AWS_KEY,
    bucket: config.BUCKET,
    awsRegion: config.AWS_REGION,
    cloudfront: true,
    xhrWithCredentials: true,
    computeContentMd5: true,
    cryptoMd5Method: (d) => btoa(sparkMD5.ArrayBuffer.hash(d, true)),
    cryptoHexEncodedHash256: sha256,
  });

  const uploadFile = (file, cb) => {
    setLoading(true);
    setUploadingError("");
    let newName = uuidv4();
    let extension = file.name.split(".");

    uploader
      .then((evaporate) => {
        evaporate
          .add({
            file,
            name: newName + "." + extension[2],
          })
          .then((res, err) => {
            if (res) {
              cb(res);
              setLoading(false);
            } else if (err) {
              setUploadingError("Something went wrong");
              setLoading(false);
            }
          });
      })
      .catch((err) => {
        setUploadingError("Something went wrong");
        setLoading(false);
      });
  };

1 ответ

Я сомневаюсь, что это потому, что btoa не работает в react-native. Поскольку react-native
использует другой движок js с браузером. Некоторый код js исполняется в браузере, но не в rn. Попробуйте реализовать btoa самостоятельно.

Есть аналогичный вопрос. React Native atob() / btoa() не работает без удаленной отладки JS

Другие вопросы по тегам