Skip to content

Commit 4d98d4b

Browse files
fix: don't crash in web workers (#1004)
1 parent 5ef989b commit 4d98d4b

File tree

16 files changed

+44
-7
lines changed

16 files changed

+44
-7
lines changed

src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,7 @@ class MiniCssExtractPlugin {
825825
}
826826

827827
return Template.asString([
828+
'if (typeof document === "undefined") return;',
828829
`var createStylesheet = ${runtimeTemplate.basicFunction(
829830
"chunkId, fullhref, oldTag, resolve, reject",
830831
[

test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ __webpack_require__.r(__webpack_exports__);
7373
/******/
7474
/******/ /* webpack/runtime/getFullHash */
7575
/******/ (() => {
76-
/******/ __webpack_require__.h = () => ("945622d4f51f3fe3a0d0")
76+
/******/ __webpack_require__.h = () => ("4568ffdcdfced785eabc")
7777
/******/ })();
7878
/******/
7979
/******/ /* webpack/runtime/global */
@@ -171,6 +171,7 @@ __webpack_require__.r(__webpack_exports__);
171171
/******/
172172
/******/ /* webpack/runtime/css loading */
173173
/******/ (() => {
174+
/******/ if (typeof document === "undefined") return;
174175
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
175176
/******/ var linkTag = document.createElement("link");
176177
/******/

test/cases/chunkFilename-fullhash/expected/webpack-5/main.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ __webpack_require__.r(__webpack_exports__);
7373
/******/
7474
/******/ /* webpack/runtime/getFullHash */
7575
/******/ (() => {
76-
/******/ __webpack_require__.h = () => ("de494c1e7411c41d8362")
76+
/******/ __webpack_require__.h = () => ("9ee2d65d5d13f2b4323d")
7777
/******/ })();
7878
/******/
7979
/******/ /* webpack/runtime/global */
@@ -171,6 +171,7 @@ __webpack_require__.r(__webpack_exports__);
171171
/******/
172172
/******/ /* webpack/runtime/css loading */
173173
/******/ (() => {
174+
/******/ if (typeof document === "undefined") return;
174175
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
175176
/******/ var linkTag = document.createElement("link");
176177
/******/

test/cases/hmr/expected/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,7 @@ __webpack_require__.r(__webpack_exports__);
934934
/******/
935935
/******/ /* webpack/runtime/css loading */
936936
/******/ (() => {
937+
/******/ if (typeof document === "undefined") return;
937938
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
938939
/******/ var linkTag = document.createElement("link");
939940
/******/

test/cases/insert-function/expected/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
/******/
156156
/******/ /* webpack/runtime/css loading */
157157
/******/ (() => {
158+
/******/ if (typeof document === "undefined") return;
158159
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
159160
/******/ var linkTag = document.createElement("link");
160161
/******/

test/cases/insert-string/expected/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
/******/
156156
/******/ /* webpack/runtime/css loading */
157157
/******/ (() => {
158+
/******/ if (typeof document === "undefined") return;
158159
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
159160
/******/ var linkTag = document.createElement("link");
160161
/******/

test/cases/insert-undefined/expected/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
/******/
156156
/******/ /* webpack/runtime/css loading */
157157
/******/ (() => {
158+
/******/ if (typeof document === "undefined") return;
158159
/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
159160
/******/ var linkTag = document.createElement("link");
160161
/******/

test/manual/index.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
66
<title>mini-css-extract-plugin testcase</title>
77
<meta name="viewport" content="width=device-width, initial-scale=1" />
8-
<link rel="stylesheet" type="text/css" href="/dist/preloaded1.chunk.css" />
8+
<link rel="stylesheet" type="text/css" href="dist/preloaded1.chunk.css" />
99
<style>
1010
.test {
1111
background: lightcoral;
@@ -23,7 +23,7 @@
2323
background: lightgreen;
2424
}
2525
</style>
26-
<link rel="stylesheet" type="text/css" href="/dist/main.css" />
26+
<link rel="stylesheet" type="text/css" href="dist/main.css" />
2727
</head>
2828
<body>
2929
<div class="test initial-css">Initial CSS: Must be green</div>
@@ -97,6 +97,6 @@
9797
</p>
9898
</div>
9999
<div class="errors"></div>
100-
<script async defer src="/dist/main.js"></script>
100+
<script async defer src="dist/main.js"></script>
101101
</body>
102102
</html>

test/manual/src/index.js

+8
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,11 @@ makeButton(".crossorigin", () => {
9494
__webpack_public_path__ = originalPublicPath;
9595
return promise;
9696
});
97+
98+
const worker = new Worker(new URL("./worker.js", import.meta.url));
99+
100+
worker.postMessage("test");
101+
102+
worker.addEventListener("message", (event) => {
103+
console.log(`Received message from worker: ${event.data}`);
104+
});

test/manual/src/worker.css

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
body {
2+
background: green;
3+
}

test/manual/src/worker.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import "./worker.css";
2+
3+
// eslint-disable-next-line no-undef
4+
self.onmessage = (event) => {
5+
console.log(`Received message from application: ${event.data}`);
6+
7+
// eslint-disable-next-line no-undef
8+
self.postMessage("I'm alive!");
9+
};
10+
11+
async function load() {
12+
return import("./simple.css");
13+
}
14+
15+
load();

test/manual/webpack.config.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@ const ENABLE_ES_MODULE =
1212
: true;
1313

1414
const OLD_API =
15-
typeof process.env.OLD_API !== "undefined" ? yn(process.env.OLD_API) : true;
15+
typeof process.env.OLD_API !== "undefined" ? yn(process.env.OLD_API) : false;
1616

17-
console.log(OLD_API);
17+
console.log("OPTIONS:");
18+
console.log("ENABLE_HMR:", ENABLE_HMR);
19+
console.log("ENABLE_ES_MODULE:", ENABLE_ES_MODULE);
20+
console.log("OLD_API:", OLD_API);
1821

1922
module.exports = {
23+
devtool: false,
2024
mode: "development",
2125
output: {
2226
chunkFilename: "[name].chunk.js",

0 commit comments

Comments
 (0)