upload using apollo graphql
I am trying to upload user avatars to cloudinary by using apollo graphql.
below is my mutation code:
const cloudinary = require('cloudinary').v2;
module.exports = {
Mutation: {
async uploadAvatar(parent, { avatar }, { models, authUser }) {
const { createReadStream } = await avatar;
cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET
});
try {
const result = await new Promise((resolve, reject) => {
createReadStream().pipe(
cloudinary.uploader.upload_stream((error, result) => {
if (error) {
reject(error);
}
resolve(result);
})
)
});
await authUser.user.updateOne({ avatar: result.secure_url });
return authUser.user;
} catch (error) {
throw new ApolloError(error);
}
}
}
}
but I am getting below error, please help me. thank you in advance!
backend | internal/util.js:74 backend | function deprecated(...args) { backend | ^ backend | backend | RangeError: Maximum call stack size exceeded backend | at ReadStream.deprecated [as open] (internal/util.js:74:22) backend | at ReadStream.open (/install/node_modules/fs-capacitor/lib/index.js:90:11) backend | at _openReadFs (internal/fs/streams.js:138:12) backend | at ReadStream.<anonymous> (internal/fs/streams.js:131:3) backend | at ReadStream.deprecated [as open] (internal/util.js:89:15) backend | at ReadStream.open (/install/node_modules/fs-capacitor/lib/index.js:90:11) backend | at _openReadFs (internal/fs/streams.js:138:12) backend | at ReadStream.<anonymous> (internal/fs/streams.js:131:3) backend | at ReadStream.deprecated [as open] (internal/util.js:89:15) backend | at ReadStream.open (/install/node_modules/fs-capacitor/lib/index.js:90:11) backend | at _openReadFs (internal/fs/streams.js:138:12) backend | at ReadStream.<anonymous> (internal/fs/streams.js:131:3) backend | at ReadStream.deprecated [as open] (internal/util.js:89:15) backend | at ReadStream.open (/install/node_modules/fs-capacitor/lib/index.js:90:11) backend | at _openReadFs (internal/fs/streams.js:138:12) backend | at ReadStream.<anonymous> (internal/fs/streams.js:131:3)
-
Hey Elias, thanks for reaching out!
I'm not very familiar with Apollo GraphQL, however, I did find some information about the error you've encountered -
https://stackoverflow.com/questions/20936486/node-js-maximum-call-stack-size-exceeded
https://medium.com/@erincheung1101/maximum-call-stack-size-exceeded-in-async-4f6ea526c74e
https://github.com/apollographql/apollo-server/issues/3508
It seems to be related to the usage of async calls and/or usage of old versions of Node/fs-capacitor package.
Hope this helps!
1 -
Hey there, I much appreciate your help!
I was able to solve this issue by downgrading Node version to 12.18.4(LTS), originally was using 14.11.x.
Thank you again!
0 -
Sure, thanks for the update, I'm glad the issue is resolved!
0
Post is closed for comments.
Comments
3 comments