TypeError: coverVal.indexOf is not a function at Hexo.<anonymous> (E:\Blog\themes\butterfly\scripts\filters\random_cover.js:15:30) at Hexo.tryCatcher (E:\Blog\node_modules\bluebird\js\release\util.js:16:23) at Hexo.<anonymous> (E:\Blog\node_modules\bluebird\js\release\method.js:15:34) at E:\Blog\node_modules\hexo\dist\extend\filter.js:58:67 at tryCatcher (E:\Blog\node_modules\bluebird\js\release\util.js:16:23) at Object.gotValue (E:\Blog\node_modules\bluebird\js\release\reduce.js:166:18) at Object.gotAccum (E:\Blog\node_modules\bluebird\js\release\reduce.js:155:25) at Object.tryCatcher (E:\Blog\node_modules\bluebird\js\release\util.js:16:23) at Promise._settlePromiseFromHandler (E:\Blog\node_modules\bluebird\js\release\promise.js:547:31) at Promise._settlePromise (E:\Blog\node_modules\bluebird\js\release\promise.js:604:18) at Promise._settlePromise0 (E:\Blog\node_modules\bluebird\js\release\promise.js:649:10) at Promise._settlePromises (E:\Blog\node_modules\bluebird\js\release\promise.js:729:18) at _drainQueueStep (E:\Blog\node_modules\bluebird\js\release\async.js:93:12) at _drainQueue (E:\Blog\node_modules\bluebird\js\release\async.js:86:9) at Async._drainQueues (E:\Blog\node_modules\bluebird\js\release\async.js:102:5) at Immediate.Async.drainQueues [as _onImmediate] (E:\Blog\node_modules\bluebird\js\release\async.js:15:14) at processImmediate (internal/timers.js:464:21)
// If cover is not set, use random cover if (!coverVal) { const randomCover = randomCoverFn() data.cover = randomCover coverVal = randomCover // update coverVal }
hexo.extend.filter.register('before_post_render', data => { const imgTestReg = /\.(png|jpe?g|gif|svg|webp)(\?.*)?$/i let { cover: coverVal, top_img: topImg } = data const postAssetFolder = hexo.config.post_asset_folder const defaultCover = hexo.theme.config.cover.default_cover
// Cache random cover if needed let randomCover; constrandomCoverFn = () => { if (!defaultCover) returnfalse if (!Array.isArray(defaultCover)) return defaultCover if (!randomCover) { const num = Math.floor(Math.random() * defaultCover.length) randomCover = defaultCover[num] } return randomCover }
// Add path to top_img and cover if post_asset_folder is enabled if (postAssetFolder) { if (typeof topImg === 'string' && topImg.indexOf('/') === -1 && imgTestReg.test(topImg)) { data.top_img = `${data.path}${topImg}` } if (typeof coverVal === 'string' && coverVal.indexOf('/') === -1 && imgTestReg.test(coverVal)) { data.cover = `${data.path}${coverVal}` } }
if (coverVal === false) return data
// If cover is not set, use random cover if (!coverVal) { const randomCover = randomCoverFn() data.cover = randomCover coverVal = randomCover // update coverVal }