difit 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/server.js +23 -13
- package/package.json +1 -1
package/dist/server/server.js
CHANGED
|
@@ -147,20 +147,30 @@ export async function startServer(options) {
|
|
|
147
147
|
}
|
|
148
148
|
async function startServerWithFallback(app, preferredPort) {
|
|
149
149
|
return new Promise((resolve, reject) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
startServerWithFallback(app, preferredPort + 1)
|
|
159
|
-
.then(resolve)
|
|
160
|
-
.catch(reject);
|
|
150
|
+
// express's listen() method uses listen() method in node:net Server instance internally
|
|
151
|
+
// https://expressjs.com/en/5x/api.html#app.listen
|
|
152
|
+
// so, an error will be an instance of NodeJS.ErrnoException
|
|
153
|
+
app.listen(preferredPort, '127.0.0.1', (err) => {
|
|
154
|
+
const url = `http://localhost:${preferredPort}`;
|
|
155
|
+
if (!err) {
|
|
156
|
+
resolve({ port: preferredPort, url });
|
|
157
|
+
return;
|
|
161
158
|
}
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
// Handling errors when failed to launch a server
|
|
160
|
+
switch (err.code) {
|
|
161
|
+
// Try another port until it succeeds
|
|
162
|
+
case 'EADDRINUSE': {
|
|
163
|
+
console.log(`Port ${preferredPort} is busy, trying ${preferredPort + 1}...`);
|
|
164
|
+
return startServerWithFallback(app, preferredPort + 1)
|
|
165
|
+
.then(({ port, url }) => {
|
|
166
|
+
resolve({ port, url });
|
|
167
|
+
})
|
|
168
|
+
.catch(reject);
|
|
169
|
+
}
|
|
170
|
+
// Unexpected error
|
|
171
|
+
default: {
|
|
172
|
+
reject(new Error(`Failed to launch a server: ${err.message}`));
|
|
173
|
+
}
|
|
164
174
|
}
|
|
165
175
|
});
|
|
166
176
|
});
|
package/package.json
CHANGED