ON CONFLICT ON CONSTRAINT fails saying constraint doesn't exist
The syntax you use is not valid for a unique index because a unique index does not create a constraint. You need to remove the ON CONSTRAINT and use the index expression instead.

This works:

INSERT INTO journals (ext_ids, title) 
VALUES ('{"nlmid": "000"}', 'blah')
ON CONFLICT ((ext_ids -&gt;&gt; 'nlmid'::text)) 
DO NOTHING;