diff --git a/src/hmr/hotModuleReplacement.js b/src/hmr/hotModuleReplacement.js
index 4b980611..c5b1bbfd 100644
--- a/src/hmr/hotModuleReplacement.js
+++ b/src/hmr/hotModuleReplacement.js
@@ -143,6 +143,10 @@ function getReloadUrl(href, src) {
}
function reloadStyle(src) {
+ if (!src) {
+ return false;
+ }
+
const elements = document.querySelectorAll('link');
let loaded = false;
diff --git a/test/HMR.test.js b/test/HMR.test.js
index c8d51093..6a2f0067 100644
--- a/test/HMR.test.js
+++ b/test/HMR.test.js
@@ -259,6 +259,31 @@ describe('HMR', () => {
}, 100);
});
+ it('should reloads with non-file script in the end of page', (done) => {
+ document.body.appendChild(document.createElement('script'));
+
+ const update = hotModuleReplacement('./src/non_file_styles.css', {});
+
+ update();
+
+ setTimeout(() => {
+ expect(console.log.mock.calls[0][0]).toMatchSnapshot();
+
+ const links = Array.prototype.slice.call(
+ document.querySelectorAll('link')
+ );
+
+ expect(links[0].visited).toBe(true);
+ expect(document.head.innerHTML).toMatchSnapshot();
+
+ links[1].dispatchEvent(getLoadEvent());
+
+ expect(links[1].isLoaded).toBe(true);
+
+ done();
+ }, 100);
+ });
+
it('should handle error event', (done) => {
const update = hotModuleReplacement('./src/style.css', {});
diff --git a/test/__snapshots__/HMR.test.js.snap b/test/__snapshots__/HMR.test.js.snap
index 9f4c8542..bf306c32 100644
--- a/test/__snapshots__/HMR.test.js.snap
+++ b/test/__snapshots__/HMR.test.js.snap
@@ -24,6 +24,10 @@ exports[`HMR should reloads with non http/https link href 1`] = `"[HMR] css relo
exports[`HMR should reloads with non http/https link href 2`] = `""`;
+exports[`HMR should reloads with non-file script in the end of page 1`] = `"[HMR] Reload all css"`;
+
+exports[`HMR should reloads with non-file script in the end of page 2`] = `""`;
+
exports[`HMR should work reload all css 1`] = `"[HMR] Reload all css"`;
exports[`HMR should work reload all css 2`] = `""`;
diff --git a/test/cases/hmr/expected/webpack-4/main.js b/test/cases/hmr/expected/webpack-4/main.js
index d96f1332..693d6d26 100644
--- a/test/cases/hmr/expected/webpack-4/main.js
+++ b/test/cases/hmr/expected/webpack-4/main.js
@@ -1022,6 +1022,10 @@ function getReloadUrl(href, src) {
}
function reloadStyle(src) {
+ if (!src) {
+ return false;
+ }
+
const elements = document.querySelectorAll('link');
let loaded = false;
diff --git a/test/cases/hmr/expected/webpack-5/main.js b/test/cases/hmr/expected/webpack-5/main.js
index 7441653f..661f7fdb 100644
--- a/test/cases/hmr/expected/webpack-5/main.js
+++ b/test/cases/hmr/expected/webpack-5/main.js
@@ -164,6 +164,10 @@ function getReloadUrl(href, src) {
}
function reloadStyle(src) {
+ if (!src) {
+ return false;
+ }
+
const elements = document.querySelectorAll('link');
let loaded = false;