From 9bf29abba82ec5122d970a99318f004d05bcea5d Mon Sep 17 00:00:00 2001 From: Eric Clemmons Date: Thu, 17 Jan 2019 19:43:42 -0800 Subject: [PATCH 1/3] Add /dev-only page --- routes/dev-only/index.js | 25 +++++++++++++++++++++++++ routes/index.js | 3 +++ 2 files changed, 28 insertions(+) create mode 100644 routes/dev-only/index.js diff --git a/routes/dev-only/index.js b/routes/dev-only/index.js new file mode 100644 index 0000000..5099622 --- /dev/null +++ b/routes/dev-only/index.js @@ -0,0 +1,25 @@ +module.exports = + process.env.NODE_ENV === "development" + ? (req, res) => { + res.send(` + + + + + + +
+ +
+
+

🤫 Shhhh!

+ +

+ This page is only available in development. +

+
+
+ + `) + } + : undefined diff --git a/routes/index.js b/routes/index.js index e7f1de9..b8384ca 100644 --- a/routes/index.js +++ b/routes/index.js @@ -25,6 +25,9 @@ module.exports = (req, res) => {
  • Apollo Server
  • +
  • + Development-Only Page +
  • Express
  • From b73c06b85748c44cd8b9679666336455734a7ab4 Mon Sep 17 00:00:00 2001 From: Eric Clemmons Date: Thu, 17 Jan 2019 19:46:45 -0800 Subject: [PATCH 2/3] In development, listen to non-exported servers so we at least 404 --- packages/polydev/src/middleware/router/launcher.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/polydev/src/middleware/router/launcher.js b/packages/polydev/src/middleware/router/launcher.js index 535d345..3dba1e1 100644 --- a/packages/polydev/src/middleware/router/launcher.js +++ b/packages/polydev/src/middleware/router/launcher.js @@ -23,7 +23,7 @@ const routes = JSON.parse(routesString) async function startHandler() { const getLatestHandler = async () => { const exported = require(handlerPath) - const handler = await (exported.default || exported) + const handler = exported ? await (exported.default || exported) : exported return handler } @@ -82,8 +82,10 @@ async function startHandler() { `${handlerPath.replace( process.cwd(), "." - )} does not return a Function or a Server` + )} does not return a Function, Server, or path to package.json` ) + // In development, at least listen on PORT so that we can 404 + express().listen(PORT) } process.on("message", bridge(PORT)) From f4780730699ea175495274c9c4f00c7d6873487e Mon Sep 17 00:00:00 2001 From: Eric Clemmons Date: Thu, 17 Jan 2019 19:47:20 -0800 Subject: [PATCH 3/3] In production, don't add routes if no handler is exported --- .../polydev/src/middleware/router/handle.production.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/polydev/src/middleware/router/handle.production.js b/packages/polydev/src/middleware/router/handle.production.js index c72ba48..4a04301 100644 --- a/packages/polydev/src/middleware/router/handle.production.js +++ b/packages/polydev/src/middleware/router/handle.production.js @@ -5,6 +5,15 @@ module.exports = async function handle(router, file, routes) { routes.map(async ([httpMethod, route]) => { const method = httpMethod.toLowerCase() const exported = require(file) + + if (!exported) { + return debug( + `Route %o does not have an exported handler from %o`, + route, + file.replace(process.cwd(), ".") + ) + } + const handler = await (exported.default || exported) debug(`router.${method}(%o, %o)`, route, file.replace(process.cwd(), "."))