App reviews, troubleshooting, and recommendations
import { nanoid } from "nanoid"; import VentroBox from "../model/ventroBoxSchema.js"; import shopify from "../shopify.js"; export const fileUpload = async (req, res, next) => { try { console.log("Uploading file..."); console.log("req.body", req.body); const shop = req?.query?.shop; console.log("shop", shop); if (!shop) { throw new Error("Missing shop parameter in the request query."); } // Retrieve session const sessions = await shopify.config.sessionStorage.findSessionsByShop(shop); console.log("sessions", sessions); if (!sessions || sessions.length === 0) { throw new Error(`No active session found for shop: ${shop}`); } const session = sessions[0]; if (!session.accessToken) { throw new Error(`Session for shop ${shop} does not have an access token.`); } const variables = { filename: req.body.name, // Correct field name (lowercase "n") mimeType: req.body.type, httpMethod: "POST", resource: "FILE", }; if (!variables.filename || !variables.mimeType) { throw new Error("Missing required fields: 'filename' or 'mimeType'."); } // Call the mutation const data = await fileUploadMutation(session, variables); console.log("data", data); const originalSource = data[0].resourceUrl; console.log("originalSource", originalSource); const dataAdded = await addImageToShopifyMutation(session, originalSource); console.log("dataAdded", dataAdded); // Respond with success res.status(200).json({ success: true, data }); } catch (error) { console.error("Error in file upload:", error.message); res.status(500).json({ success: false, error: error.message }); } }; // File upload GraphQL query const fileUploadQuery = () => { return ` mutation stagedUploadsCreate($input: [StagedUploadInput!]!) { stagedUploadsCreate(input: $input) { stagedTargets { url resourceUrl parameters { name value } } } } `; }; const addImageToShopify = () => { return ` mutation fileCreate($files: [FileCreateInput!]!) { fileCreate(files: $files) { files { id fileStatus alt createdAt } userErrors { field message } } } `; }; // File upload mutation const fileUploadMutation = async (session, variables) => { const query = fileUploadQuery(); // Create the GraphQL client with the session const client = new shopify.api.clients.Graphql({ session: session, }); try { // Execute the mutation const response = await client.query({ data: { query: query, variables: { input: [ { filename: variables.filename, // Correct field name mimeType: variables.mimeType, httpMethod: variables.httpMethod, resource: variables.resource, }, ], }, }, }); return response.body.data.stagedUploadsCreate.stagedTargets; } catch (error) { console.error("Error in GraphQL Mutation:", error.response || error.message); throw new Error("Failed to execute stagedUploadsCreate mutation"); } }; const addImageToShopifyMutation = async (session, originalSource) => { const query = addImageToShopify(); // Create the GraphQL client with the session const client = new shopify.api.clients.Graphql({ session: session, }); try { // Execute the mutation const response = await client.query({ data: { query: query, variables: { files: [ { alt: "Uploaded image", originalSource: originalSource, contentType: "IMAGE", }, ], // Ensure this is an array }, }, }); console.log("response", response.body.data.fileCreate.files); return response.body.data.fileCreate.files; } catch (error) { console.error("Error in GraphQL Mutation:", error.response || error.message); throw new Error("Failed to execute fileCreate mutation"); } };
in my this code , when i add image in my store file section give me an bellow error how can i fixed this .
thanks
June brought summer energy to our community. Members jumped in with solutions, clicked ...
By JasonH Jun 5, 2025Learn how to build powerful custom workflows in Shopify Flow with expert guidance from ...
By Jacqui May 7, 2025Did You Know? May is named after Maia, the Roman goddess of growth and flourishing! ...
By JasonH May 2, 2025