Browse Source

Don't inject the autoreload tag when headers have already been sent

master
Sven Slootweg 3 months ago
parent
commit
dc3749565c
1 changed files with 13 additions and 9 deletions
  1. +13
    -9
      operations/development-server.js

+ 13
- 9
operations/development-server.js View File

@ -18,17 +18,21 @@ function monkeyPatchEnd(res) {
let prefix;
if (originalChunk == null || typeof originalChunk === "string" || Buffer.isBuffer(originalChunk)) {
let typeHeader = res.getHeader("content-type");
if (!res.headersSent) {
// If headers have already been sent, we'll just have to hope that the browser will still look at our appended tag, as we can't change the response size anymore...
// TODO: Make this more robust in the future
let typeHeader = res.getHeader("content-type");
if (typeHeader != null && typeHeader.startsWith("text/html")) {
let contentLength = res.getHeader("content-length");
if (contentLength != null) {
// Compensate for the additional bytes introduced by our injected script tag
res.setHeader("content-length", parseInt(contentLength) + reloadClientTag.length);
if (typeHeader != null && typeHeader.startsWith("text/html")) {
let contentLength = res.getHeader("content-length");
if (contentLength != null) {
// Compensate for the additional bytes introduced by our injected script tag
res.setHeader("content-length", parseInt(contentLength) + reloadClientTag.length);
}
prefix = reloadClientTag;
}
prefix = reloadClientTag;
}
// Reset the `end` method back to the original method; we don't need to get in the way anymore


Loading…
Cancel
Save