मैं अपोलो क्लाइंट और सर्वर का उपयोग कर रहा हूं और सर्वर से छवि क्लाउडिनरी पर अपलोड होती है, कोई समस्या नहीं है। लेकिन ऐप में जिसे भी मैंने सर्वर पर फाइल भेजने की कोशिश की, वह कहता है createReadStream is not a function, code: INTERNAL_SERVER_ERROR। मैं प्रतिक्रिया-मूल की छवि पिकर निर्भरता का उपयोग कर रहा हूं जो मुझे एक फ़ाइल पथ और अन्य फ़ाइल चश्मा और बेस 64 देता है चाहे मैं पूरी फ़ाइल भेजता हूं या केवल पथ या बेस 64 यह काम नहीं करता है।

फ़ाइल सही ढंग से नहीं चल रही है

मेरा apolloConfig.js है:


import { ApolloClient, ApolloLink } from "@apollo/client";
import { Observable } from "apollo-link";
import { withClientState } from "apollo-link-state";
import { InMemoryCache } from "apollo-cache-inmemory";
import { onError } from "@apollo/client/link/error";
import { createUploadLink } from "apollo-upload-client";
import { buildAxiosFetch } from "@lifeomic/axios-fetch";
import { Config } from "App/Config";
import axios from "axios";
import AsyncStorage from "@react-native-community/async-storage";

const SERVER_URL = Config.API_URL;
const cache = new InMemoryCache({});

const httpLink = createUploadLink({
  uri: SERVER_URL,
  credentials: "same-origin",
  fetch: buildAxiosFetch(axios, (config, input, init) => ({
    ...config,
    onUploadProgress: init.onUploadProgress,
  })),
});

const request = async (operation) => {
  const token = await AsyncStorage.getItem("token");
  console.log(token);
  operation.setContext({
    headers: {
      authorization: token ? `Bearer ${token}` : "",
    },
  });
};

export const requestLink = new ApolloLink(
  (operation, forward) =>
    new Observable((observer) => {
      let handle;
      Promise.resolve(operation)
        .then((oper) => request(oper))
        .then(() => {
          handle = forward(operation).subscribe({
            next: observer.next.bind(observer),
            error: observer.error.bind(observer),
            complete: observer.complete.bind(observer),
          });
        })
        .catch(observer.error.bind(observer));
      return () => {
        if (handle) handle.unsubscribe();
      };
    })
);

const link = ApolloLink.from([
  onError(({ graphQLErrors, networkError }) => {
    if (graphQLErrors) {
      console.log("[graphQLErrors]", graphQLErrors);

      graphQLErrors.map(({ message, extensions }) => {
        console.log(
          `[GraphQL error]: Message: ${message}, code: ${extensions.code}`
        );
        if (extensions.code === "UNAUTHENTICATED") {
          AsyncStorage.clear();
        }
      });
    }
    if (networkError) {
      console.log(`[Network error]: ${networkError}`);
    }
  }),
  requestLink,
  httpLink,
]);

const client = new ApolloClient({ link, cache });

export { client };

मेरा अपलोडअवतार.जेएस

try {
        const { data } = await uploadImage({
          variables: { file: image },
        });
        console.log(data);
      } catch (error) {
        console.log(error);
        Toast.show({
          type: "error",
          position: "bottom",
          text1: "Authentication Failed",
          text2: "Something went wrong while uploading photo!",
        });
      }
    });
  };
0
Alireza tk 29 जुलाई 2020, 14:59
वह विशेष त्रुटि सर्वर-साइड समस्या की तरह लगती है। ऐसा हो सकता है, उदाहरण के लिए, यदि आप await फ़ाइल तर्क नहीं करते हैं।
 – 
Daniel Rearden
29 जुलाई 2020, 15:09
मैंने सर्वर कोड नहीं लिखा था लेकिन इसे सर्वर पर अपलोड किया जा सकता है पोस्टमैन से कोई समस्या नहीं है। यहां तक ​​कि यह एक प्रतिक्रिया वेब ऐप में भी काम करता है
 – 
Alireza tk
29 जुलाई 2020, 15:13
क्या आप इस मुद्दे को हल करने में सक्षम थे?
 – 
saransh mehra
13 अप्रैल 2021, 10:54
हां मैं अब जवाब दूंगा
 – 
Alireza tk
13 अप्रैल 2021, 17:27

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपनी फ़ाइल को ReactNativeFile में बदलना होगा, जैसा कि अपोलो-अपलोड-क्लाइंट के डॉक्स में बताया गया है

import { ReactNativeFile } from 'apollo-upload-client';

const file = new ReactNativeFile({
  uri: uriFromCameraRoll,
  name: 'a.jpg',
  type: 'image/jpeg',
});

अधिक जानकारी : https://github .com/jaydenseric/apolo-upload-client

0
Alireza tk 13 अप्रैल 2021, 17:29