Authored by ccbikai(👎🏻🍜)

记录 Circular 错误

@@ -40,6 +40,8 @@ app.locals.startTime = moment().format('YYYYMMDDHH'); @@ -40,6 +40,8 @@ app.locals.startTime = moment().format('YYYYMMDDHH');
40 // 全局注册library 40 // 全局注册library
41 yohoLib.global(config); 41 yohoLib.global(config);
42 42
  43 +const logger = global.yoho.logger;
  44 +
43 // zookeeper 45 // zookeeper
44 if (config.zookeeperServer) { 46 if (config.zookeeperServer) {
45 require('yoho-zookeeper')(config.zookeeperServer, 'wap', app.locals.wap = {}, global.yoho.cache); 47 require('yoho-zookeeper')(config.zookeeperServer, 'wap', app.locals.wap = {}, global.yoho.cache);
@@ -52,6 +54,23 @@ app.set('etag', false); @@ -52,6 +54,23 @@ app.set('etag', false);
52 54
53 app.enable('trust proxy'); 55 app.enable('trust proxy');
54 56
  57 +const safeStringify = require('fast-safe-stringify');
  58 +
  59 +// 循环对象检测
  60 +app.set('json replacer', function(key, value) {
  61 + if (!key) {
  62 + let safeStr = safeStringify(value);
  63 +
  64 + if (/\[Circular\]/.test(safeStr)) {
  65 + logger.error('stringify error:', value);
  66 + }
  67 +
  68 + return JSON.parse(safeStr);
  69 + }
  70 +
  71 + return value;
  72 +});
  73 +
55 // 请求限制中间件 74 // 请求限制中间件
56 if (!app.locals.devEnv) { 75 if (!app.locals.devEnv) {
57 app.use(require('./doraemon/middleware/limiter')); 76 app.use(require('./doraemon/middleware/limiter'));
@@ -60,8 +79,6 @@ if (!app.locals.devEnv) { @@ -60,8 +79,6 @@ if (!app.locals.devEnv) {
60 // 指定libray目录 79 // 指定libray目录
61 global.utils = path.resolve('./utils'); 80 global.utils = path.resolve('./utils');
62 81
63 -const logger = global.yoho.logger;  
64 -  
65 // 访问域名层级 82 // 访问域名层级
66 app.set('subdomain offset', 3); 83 app.set('subdomain offset', 3);
67 app.use(global.yoho.hbs({ 84 app.use(global.yoho.hbs({
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 "connect-multiparty": "^2.0.0", 32 "connect-multiparty": "^2.0.0",
33 "cookie-parser": "^1.4.3", 33 "cookie-parser": "^1.4.3",
34 "express": "^4.14.1", 34 "express": "^4.14.1",
  35 + "fast-safe-stringify": "^1.1.13",
35 "feed": "^1.0.2", 36 "feed": "^1.0.2",
36 "geetest": "^4.1.1", 37 "geetest": "^4.1.1",
37 "lodash": "^4.17.4", 38 "lodash": "^4.17.4",