diff --git a/lib/loader.js b/lib/loader.js index 86ea39e8..7a572d53 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -12,6 +12,23 @@ const normalizeOptions = require('./normalizeOptions'); let nodeSassJobQueue = null; +// Very hacky check +function hasGetResolve(loaderContext) { + return ( + loaderContext.getResolve && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory._create && + /cachedCleverMerge/.test( + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory._create.toString() + ) + ); +} + /** * The sass-loader makes node-sass and dart-sass available to webpack modules. * @@ -37,8 +54,8 @@ function sassLoader(content) { let resolve = pify(this.resolve); - // Supported since v4.27.0 - if (this.getResolve) { + // Supported since v4.36.0 + if (hasGetResolve(self)) { resolve = this.getResolve({ mainFields: ['sass', 'style', '...'], extensions: ['.scss', '.sass', '.css', '...'],