覆盖整个应用程序中的每个 res.render 到 res.json

Override every res.render to res.json in the whole app

我想将整个应用程序的每个 res.render 转换为 res.json。我这样做的原因是为了避免仅在开发环境中出现错误代码,我想 return JSON 而不是 HTML.

我找到了这个 question and following the solution 我认为它适用于:

const renderToJson = function(req, res, next) {
  res.render = function(view, options, callback) {
    res.status(200).json(res, view, options, callback);
  };
};
app.use(renderToJson);

const renderToJson = function(req, res, next) {
  const _render = res.status(200).json;
  res.render = function(view, options, callback) {
    _render.call(res, view, options, callback);
  };
};
app.use(renderToJson);

但不幸的是它没有。我继续收到 HTML,没有任何错误。

我可以得到我想要的

const renderToJson = function(req, res, next) {
  let _render = res.render;
  res.render = function(view, options, callback) {
    this.json(options);
  };
  next();
};
app.use(renderToJson);

保持我的回复未获批准,因为这可能有缺点。