diff --git a/lib/loader.js b/lib/loader.js index f4158fa5..799529f5 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -28,9 +28,13 @@ function sassLoader(content) { sass = require("node-sass"); sassVersion = /^(\d+)/.exec(require("node-sass/package.json").version).pop(); } catch (e) { - throw new Error( - "Error loading `node-sass`: " + e - ); + if (e.code === "MODULE_NOT_FOUND") { + throw new Error( + "Error loading `node-sass`: " + e + ); + } + + throw e; } if (Number(sassVersion) < 4) { diff --git a/test/index.test.js b/test/index.test.js index 12f575cd..d7134b5b 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -289,8 +289,28 @@ describe("sass-loader", () => { done(); }); }); - it("should output a message when `node-sass` is an incompatible version", (done) => { + it("should output a message when `node-sass` throw other error", (done) => { mockRequire.reRequire(pathToSassLoader); + const module = require("module"); + const originalResolve = module._resolveFilename; + + module._resolveFilename = function (filename) { + if (!filename.match(/node-sass/)) { + return originalResolve.apply(this, arguments); + } + + throw new Error("Other error"); + }; + runWebpack({ + entry: pathToSassLoader + "!" + pathToErrorFile + }, (err) => { + module._resolveFilename = originalResolve; + mockRequire.reRequire("node-sass"); + err.message.should.match(/Other error/); + done(); + }); + }); + it("should output a message when `node-sass` is an incompatible version", (done) => { mockRequire("node-sass/package.json", { version: "3.0.0" }); runWebpack({ entry: pathToSassLoader + "!" + pathToErrorFile