blob: a6e5018c45ee2e184534c65d4959714719e5c84c [file] [log] [blame]
// require leveldown. provide verbose output on error as it is the default
// nodejs adapter, which we do not provide for the user
/* istanbul ignore next */
var requireLeveldown = function () {
try {
return require('leveldown');
} catch (err) {
/* eslint no-ex-assign: 0*/
err = err || 'leveldown import error';
if (err.code === 'MODULE_NOT_FOUND') {
// handle leveldown not installed case
return new Error([
'the \'leveldown\' package is not available. install it, or,',
'specify another storage backend using the \'db\' option'
].join(' '));
} else if (err.message && err.message.match('Module version mismatch')) {
// handle common user enviornment error
return new Error([
err.message,
'This generally implies that leveldown was built with a different',
'version of node than that which is running now. You may try',
'fully removing and reinstalling PouchDB or leveldown to resolve.'
].join(' '));
}
// handle general internal nodejs require error
return new Error(err.toString() + ': unable to import leveldown');
}
};
export default requireLeveldown;