| // 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; |