fix(stage-tamagotchi): should handle EADDRINUSE, bug of srvx, robust for server channel restart, injeca fix

This commit is contained in:
Neko Ayaka
2026-03-10 23:47:39 +08:00
parent e6ac3ff46e
commit a2da08f2ce
14 changed files with 432 additions and 652 deletions
@@ -1,23 +1,28 @@
diff --git a/dist/adapters/node.mjs b/dist/adapters/node.mjs
index 6da71ede8be15defb4f065d7eaf123ecad56afbd..5f0204722ad0a1259188a972f435d00681435d69 100644
index 8d33fdd4a8948c18aad849681f79e5535d7a6b77..d8065646aeef530222ed8f9b1ab9f9a2cd1169eb 100644
--- a/dist/adapters/node.mjs
+++ b/dist/adapters/node.mjs
@@ -611,12 +611,17 @@ var NodeServer = class {
@@ -765,13 +765,21 @@ var NodeServer = class {
if (!options.manual) this.serve();
}
serve() {
if (this.#listeningPromise) return Promise.resolve(this.#listeningPromise).then(() => this);
- if (this.#listeningPromise) return Promise.resolve(this.#listeningPromise).then(() => this);
- this.#listeningPromise = new Promise((resolve) => {
+ if (this.#listeningPromise) {
+ return Promise.resolve(this.#listeningPromise).then(() => this);
+ }
+
+ this.#listeningPromise = new Promise((resolve, reject) => {
+ this.node.server.once("error", (err) => {
+ reject(err);
+ })
+ this.node.server.once("error", (error) => {
+ reject(error);
+ });
this.node.server.listen(this.serveOptions, () => {
printListening(this.options, this.url);
resolve();
});
});
+
+ return this.#listeningPromise
+ return this.#listeningPromise;
}
get url() {
const addr = this.node?.server?.address();