diff --git a/lib/ProvidePlugin.js b/lib/ProvidePlugin.js index b09d8c864da..3ed2fc1b4b2 100644 --- a/lib/ProvidePlugin.js +++ b/lib/ProvidePlugin.js @@ -76,9 +76,8 @@ class ProvidePlugin { normalModuleFactory.hooks.parser .for("javascript/dynamic") .tap("ProvidePlugin", handler); - normalModuleFactory.hooks.parser - .for("javascript/esm") - .tap("ProvidePlugin", handler); + + // Disable ProvidePlugin for javascript/esm, see https://github.com/webpack/webpack/issues/7032 } ); } diff --git a/test/configCases/plugins/provide-plugin/foo.mjs b/test/configCases/plugins/provide-plugin/foo.mjs new file mode 100644 index 00000000000..b7beb9c20ab --- /dev/null +++ b/test/configCases/plugins/provide-plugin/foo.mjs @@ -0,0 +1,3 @@ +export default function foo() { + return typeof esm; +} \ No newline at end of file diff --git a/test/configCases/plugins/provide-plugin/index.js b/test/configCases/plugins/provide-plugin/index.js index 00d4fe5c700..e9d4b96d874 100644 --- a/test/configCases/plugins/provide-plugin/index.js +++ b/test/configCases/plugins/provide-plugin/index.js @@ -56,3 +56,8 @@ it("should provide ES2015 modules", function() { expect((es2015_alias)).toBe("ECMAScript Harmony"); expect((es2015_year)).toBe(2015); }); + +it("should not provide for mjs", function(){ + var foo = require("./foo.mjs").default; + expect(foo()).toBe("undefined"); +}); diff --git a/test/configCases/plugins/provide-plugin/webpack.config.js b/test/configCases/plugins/provide-plugin/webpack.config.js index 05b97a8af87..9af9653794f 100644 --- a/test/configCases/plugins/provide-plugin/webpack.config.js +++ b/test/configCases/plugins/provide-plugin/webpack.config.js @@ -10,7 +10,8 @@ module.exports = { es2015_name: ["./harmony", "default"], es2015_alias: ["./harmony", "alias"], es2015_year: ["./harmony", "year"], - "this.aaa": "./aaa" + "this.aaa": "./aaa", + esm: "fail" }) ] };