【问题标题】:AWS X-Ray with Node.JS Express and requestAWS X-Ray 与 Node.JS Express 和请求
【发布时间】:2019-10-26 12:14:17
【问题描述】:

所以我正在尝试使用我的 express 应用程序实现 X-Ray。 我有我的 app.js 文件并在内部引用了一个路由器文件。

我的项目结构:
project/ routes/ index.js app.js

app.js:

var indexRouter = require("./routes/index")
...
app.use("/", indexRouter)
...

index.js:

const AWSXRay = require("aws-xray-sdk")
const request = require("request")

router.post("/xray", async function(req, res, next) {
    let app = req.app
    app.use(AWSXRay.express.openSegment("MyApp"))

    try {
        console.log(AWSXRay.getSegment()) // this succesfully gets segment
        AWSXRay.captureAsyncFunc("send", function(subsegment) {
            request.get("http://www.google.com", { XRaySegment: subsegment }, function() {
                res.json({
                    success: "success"
                })
                subsegment.close()
        })
    } catch (err) {
        next(err)
    }
    app.use(AWSXRay.express.closeSegment())
})

我正在关注自动模式示例:通过 AWS 文档 (https://docs.aws.amazon.com/xray-sdk-for-nodejs/latest/reference/index.html) 中的异步函数调用捕获,但我收到一条错误消息: “无法从上下文中获取当前子/段。”


谁能告诉我我做错了什么?

【问题讨论】:

    标签: node.js amazon-web-services express request aws-xray


    【解决方案1】:

    您应该将app.use(AWSXRay.express.openSegment("MyApp")) 代码移动到app.js 上方的app.use("/", indexRouter)

    然后将app.use(AWSXRay.express.closeSegment())移到app.use("/", indexRouter)下方。

    如果您查看提供的链接中引用的代码,您会注意到 openSegmentcloseSegment 在路线之外,而不是在路线内部(就像您目前拥有的那样)

    链接中的代码供参考:

    var app = express();
    
    //...
    
    var AWSXRay = require('aws-xray-sdk');
    
    app.use(AWSXRay.express.openSegment('defaultName'));               //required at the start of your routes
    
    app.get('/', function (req, res) {
      res.render('index');
    });
    
    app.use(AWSXRay.express.closeSegment());   //Required at the end of your routes / first in error handling routes
    

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多