Open amcc opened 4 years ago
These logs don't seem to point to a specific problem or line with the error. Could you make this reproducible in a GitHub project please?
@Haroenv yep that's my quandary too! I'm making a repo now to try to replicate and share. I was wondering whether there were any fundamental problems with my code. I'll post the repo asap
I've now got this working. The suggestion to make a repo was a very good one! It worked out of the box. So i've tried to step back though the settings I had originally to find the problem.
By adding an id
into the graphQL it worked, this was the only issue.
In the example up top I am only getting a single field, displayName
- effectively the title
. It seems Algolia needs an id
.
This makes some sense, but perhaps a more useful error can be produced if this happens? Also if there's some advanced way of debugging this that would be helpful.
I've created a repo here that works perfectly with Sanity and Algolia, you can reproduce the error using this and following the instructions below: https://github.com/amcc/gatsby-sanity-algolia
By removing id
from web/gatsby-config.js (line 16) you'll see the error. You'll have to add credentials for a Sanity blog (you need the Sanity project id), plus the Algolia credentials of course.
Interesting, I expect there to be a clear error in that case "id or objectID required", do you see that now or was it swallowed by something?
I think its getting swallowed, or not there, here's the output from the basic sanity site i made:
...
success Building static HTML for pages - 1.668 s — 9/9 43.51 pages/second
Algolia: 1 queries to index
Algolia: query 0: executing query
lerna ERR! npm run build stderr:
error failed to index to Algolia. Query results do not have 'objectID' or 'id' key
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sanity-gatsby-blog-web@1.0.0 build: `gatsby build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sanity-gatsby-blog-web@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/alistairmcclymont/.npm/_logs/2020-05-06T09_47_49_965Z-debug.log
lerna ERR! npm run build exited 1 in 'sanity-gatsby-blog-web'
lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sanity-gatsby-blog@1.0.0 build: `lerna run build --parallel`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sanity-gatsby-blog@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/alistairmcclymont/.npm/_logs/2020-05-06T09_47_50_057Z-debug.log
The terminal process terminated with exit code: 1
here's the second log referenced in the terminal output above, the two logs are identical (except one references the web directory - sanity uses a monorepo with a sanity directory and a web directory for Gatsby):
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin/node',
1 verbose cli '/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin/npm',
1 verbose cli 'run',
1 verbose cli 'build'
1 verbose cli ]
2 info using npm@6.14.4
3 info using node@v13.13.0
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle sanity-gatsby-blog-web@1.0.0~prebuild: sanity-gatsby-blog-web@1.0.0
6 info lifecycle sanity-gatsby-blog-web@1.0.0~build: sanity-gatsby-blog-web@1.0.0
7 verbose lifecycle sanity-gatsby-blog-web@1.0.0~build: unsafe-perm in lifecycle true
8 verbose lifecycle sanity-gatsby-blog-web@1.0.0~build: PATH: /Users/alistairmcclymont/.nvm/versions/node/v13.13.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/web/node_modules/.bin:/Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/web/node_modules/.bin:/Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/node_modules/.bin:/Users/alistairmcclymont/Sites/RCA/test/node_modules/.bin:/Users/alistairmcclymont/Sites/RCA/node_modules/.bin:/Users/alistairmcclymont/Sites/node_modules/.bin:/Users/alistairmcclymont/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin:/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/node_modules/.bin:/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin:/Applications/MAMP/bin/php/php7.1.8/bin:/Applications/MAMP/Library/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/usr/local/bin
9 verbose lifecycle sanity-gatsby-blog-web@1.0.0~build: CWD: /Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/web
10 silly lifecycle sanity-gatsby-blog-web@1.0.0~build: Args: [ '-c', 'gatsby build' ]
11 silly lifecycle sanity-gatsby-blog-web@1.0.0~build: Returned: code: 1 signal: null
12 info lifecycle sanity-gatsby-blog-web@1.0.0~build: Failed to exec build script
13 verbose stack Error: sanity-gatsby-blog-web@1.0.0 build: `gatsby build`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:315:20)
13 verbose stack at ChildProcess.<anonymous> (/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:315:20)
13 verbose stack at maybeClose (internal/child_process.js:1026:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid sanity-gatsby-blog-web@1.0.0
15 verbose cwd /Users/alistairmcclymont/Sites/RCA/test/gatsby-sanity-algolia/web
16 verbose Darwin 19.4.0
17 verbose argv "/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin/node" "/Users/alistairmcclymont/.nvm/versions/node/v13.13.0/bin/npm" "run" "build"
18 verbose node v13.13.0
19 verbose npm v6.14.4
20 error code ELIFECYCLE
21 error errno 1
22 error sanity-gatsby-blog-web@1.0.0 build: `gatsby build`
22 error Exit status 1
23 error Failed at the sanity-gatsby-blog-web@1.0.0 build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Here's a working version from a basic repo: https://github.com/amcc/gatsby-sanity-algolia
The issue was leaving out the id
from the graphql
I'm going to reopen this so I can investigate why the error wasn't shown later. Glad you found your solution though!
I had a very similar issue that took me a few days to finally resolve. Mine was a tad more complex in that I was breaking my GraphQL results down into small chunks. Algolia was deduplicating those chunks because I was passing the same ID (many Algolia records for my one record). I had to append the index
to my ID
in order to give Algolia a unique ID.
const chunkBlocks = input => {
return input.map(({ node: { slug, _rawBody, id, ...rest } }) => {
return _rawBody.map((body, index) => {
const bodyContent = extractContent(body)
const objectID = id + index
return {type: "page", objectID, ...slug, bodyContent, ...rest}
})
}).flat()
}
I agree that it could be called out more clearly that each record requires a unique ID that we are responsible for sending. Hopefully this post saves someone else the trouble.
I came across the same issue again yesterday, on a different project, found my own issue and remembered the fix!
I agree a better error should be shown here. Either the error from Algolia could be shown again, or we can do an isUnique on the objectIds before sending. Open for contributions here!
I've had algolia running fine with a different API, now I'm trying to get it to work with Sanity.io and have what i think is a very simple query to get going with. This query works fine in graphiQL:
Here's the code, and to debug i put all the API credentials in the code and took it out of .env.production incase there was an issue there. I'm building locally:
In my config settings:
From the log mentioned above:
I want to try and debug this, but can't understand how - if anyone can help me there too that would be great.