首页 > 解决方案 > 部署到 Google App Engine 时找不到 Express 可选路由

问题描述

我在我的 Express 服务中的路由中添加了一个新的可选参数。一切都在本地工作,但是当部署到 Google App Engine 时,我的服务在提供可选参数时返回未找到。

主服务器启动:

const indexRouter: express.Router = cradle.indexRouter; // from dependency injection
const server = express();
server.disable("x-powered-by");
server.use(responseTime(responseTimeLogger(logger)));
const port = process.env.PORT || 3000;
server.listen(port, () => {
      logger.info(`Express server has started on port ${port}`);
      server.use("/api/v1/", indexRouter);
      resolve();
});

cradle.indexRouter-> createIndexRouter

function createIndexRouter(services: IIndexRouterArgs) {
  const indexRouter = Router();

  indexRouter.use("/weather", services.weatherRouter);
  indexRouter.use("/health", services.healthRouter);
  indexRouter.use("*", notFoundMiddleware);

  return indexRouter;
}

services.weatherRouter-> createWeatherRouter

function createWeatherRouter(services: IWeatherRouterArgs) {
  const weatherRouter = Router();

  weatherRouter.get(
    "/:latitude/:longitude/:postalCode?",
    services.weatherController.reportWeather
  );

  return weatherRouter;
}

在请求后https://{service}.com/api/v1/weather/50/50/10001,我预计会被击中,但由于 10001 (postalCode) 参数services.weatherController.reportWeather而被路由到。notFoundMiddleware删除它会返回一个成功的响应。

标签: javascripttypescriptexpressgoogle-app-enginegoogle-cloud-platform

解决方案


推荐阅读