Improve HMR (#1896)
This commit is contained in:
parent
6b9ec716ee
commit
b1586a87ac
2 changed files with 18 additions and 10 deletions
|
@ -21,6 +21,7 @@ import { createVite } from '../create-vite.js';
|
||||||
import * as msg from './messages.js';
|
import * as msg from './messages.js';
|
||||||
import notFoundTemplate, { subpathNotUsedTemplate } from './template/4xx.js';
|
import notFoundTemplate, { subpathNotUsedTemplate } from './template/4xx.js';
|
||||||
import serverErrorTemplate from './template/5xx.js';
|
import serverErrorTemplate from './template/5xx.js';
|
||||||
|
import { viteifyURL } from '../util.js';
|
||||||
|
|
||||||
export interface DevOptions {
|
export interface DevOptions {
|
||||||
logging: LogOptions;
|
logging: LogOptions;
|
||||||
|
@ -305,9 +306,6 @@ export class AstroDevServer {
|
||||||
next();
|
next();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mostRecentRoute = route;
|
|
||||||
|
|
||||||
// handle .astro and .md pages
|
// handle .astro and .md pages
|
||||||
filePath = new URL(`./${route.component}`, this.config.projectRoot);
|
filePath = new URL(`./${route.component}`, this.config.projectRoot);
|
||||||
const html = await ssr({
|
const html = await ssr({
|
||||||
|
@ -321,6 +319,7 @@ export class AstroDevServer {
|
||||||
routeCache: this.routeCache,
|
routeCache: this.routeCache,
|
||||||
viteServer: this.viteServer,
|
viteServer: this.viteServer,
|
||||||
});
|
});
|
||||||
|
this.mostRecentRoute = route;
|
||||||
info(this.logging, 'astro', msg.req({ url: pathname, statusCode: 200, reqTime: performance.now() - reqStart }));
|
info(this.logging, 'astro', msg.req({ url: pathname, statusCode: 200, reqTime: performance.now() - reqStart }));
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
'Content-Type': mime.getType('.html') as string,
|
'Content-Type': mime.getType('.html') as string,
|
||||||
|
@ -329,9 +328,17 @@ export class AstroDevServer {
|
||||||
res.write(html);
|
res.write(html);
|
||||||
res.end();
|
res.end();
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
this.viteServer.ws.send({ type: 'error', err });
|
|
||||||
const statusCode = 500;
|
const statusCode = 500;
|
||||||
const html = serverErrorTemplate({
|
const mod = filePath && this.viteServer.moduleGraph.getModuleById(viteifyURL(filePath));
|
||||||
|
if (mod) {
|
||||||
|
for (const m of [mod, ...mod.importedModules]) {
|
||||||
|
this.viteServer.moduleGraph.invalidateModule(m);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.viteServer.moduleGraph.invalidateAll();
|
||||||
|
}
|
||||||
|
this.viteServer.ws.send({ type: 'error', err });
|
||||||
|
let html = serverErrorTemplate({
|
||||||
statusCode,
|
statusCode,
|
||||||
title: 'Internal Error',
|
title: 'Internal Error',
|
||||||
tabTitle: '500: Error',
|
tabTitle: '500: Error',
|
||||||
|
@ -339,6 +346,7 @@ export class AstroDevServer {
|
||||||
url: err.url || undefined,
|
url: err.url || undefined,
|
||||||
stack: stripAnsi(err.stack),
|
stack: stripAnsi(err.stack),
|
||||||
});
|
});
|
||||||
|
html = await this.viteServer.transformIndexHtml(pathname, html, pathname);
|
||||||
info(this.logging, 'astro', msg.req({ url: pathname, statusCode: 500, reqTime: performance.now() - reqStart }));
|
info(this.logging, 'astro', msg.req({ url: pathname, statusCode: 500, reqTime: performance.now() - reqStart }));
|
||||||
res.writeHead(statusCode, {
|
res.writeHead(statusCode, {
|
||||||
'Content-Type': mime.getType('.html') as string,
|
'Content-Type': mime.getType('.html') as string,
|
||||||
|
|
|
@ -123,10 +123,10 @@ ${err.url}`;
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async handleHotUpdate(context) {
|
// async handleHotUpdate(context) {
|
||||||
if (devServer) {
|
// if (devServer) {
|
||||||
return devServer.handleHotUpdate(context);
|
// return devServer.handleHotUpdate(context);
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue