javascript - 部署到 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
删除它会返回一个成功的响应。
解决方案
推荐阅读
- sql-server - 如何在没有死锁的情况下进行并发存储过程调用?
- angular - Angular 6 How to add and remove class using Angular Renderer2
- sql - 通过检查列值 sql 获取唯一行
- clang - What are the standard file extension of files generated by llvm tool chain?
- python - 目标变量有异常值:机器学习回归
- node.js - 从两个集合 node.js 获取的 res.send 方法中发送数据
- javascript - jsPDF,保存方法导致“未捕获(承诺)RangeError:无效的字符串长度”
- php - 如何通过 API 启动 Firebase 电话验证
- tensorflow - 我需要帮助理解强化学习代码
- reactjs - How to fetch Data in Common Component from different Routs?