Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for express@5 #4238

Open
trentm opened this issue Sep 16, 2024 · 0 comments
Open

Add support for express@5 #4238

trentm opened this issue Sep 16, 2024 · 0 comments

Comments

@trentm
Copy link
Member

trentm commented Sep 16, 2024

[email protected] was released recently (2024-09-10). We will need to do some work on our instrumentation to support it.

Just attempting to instrument v5 with the current instrumentation results in tests crashing:

diff --git a/lib/instrumentation/modules/express.js b/lib/instrumentation/modules/express.js
index d7784cfa..417e27de 100644
--- a/lib/instrumentation/modules/express.js
+++ b/lib/instrumentation/modules/express.js
@@ -17,9 +17,9 @@ module.exports = function (express, agent, { version, enabled }) {

   agent.setFramework({ name: 'express', version, overwrite: false });

-  if (!semver.satisfies(version, '^4.0.0')) {
+  if (!semver.satisfies(version, '>=4.0.0 <6.0.0')) {
     agent.logger.debug(
-      'express version %s not supported - aborting...',
+      'instrumenting express@%s is not supported, skipping',
       version,
     );
     return express;

Test crash:

% node test/instrumentation/modules/express/basic.test.js
...
# expose app.use handle properties
TypeError: Cannot read properties of undefined (reading 'stack')
    at handle (/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:512:35)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at router (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:59:12)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/application.js:179:15)
    at Server.app (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/express.js:38:9)
    at Server.emit (node:events:517:28)
    at Server.emit (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/http-shared.js:162:19)
    at parserOnIncoming (node:_http_server:1130:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17) {
  [Symbol(ElasticAPMErrorReported)]: true
}
/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:562
    throw err;
    ^

TypeError: Cannot read properties of undefined (reading 'stack')
    at handle (/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:512:35)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at router (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:59:12)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/application.js:179:15)
    at Server.app (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/express.js:38:9)
    at Server.emit (node:events:517:28)
    at Server.emit (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/http-shared.js:162:19)
    at parserOnIncoming (node:_http_server:1130:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17) {
  [Symbol(ElasticAPMErrorReported)]: true
}

Node.js v18.20.4
Full test run output
% node test/instrumentation/modules/express/basic.test.js
{"log.level":"info","@timestamp":"2024-09-16T21:39:38.787Z","log.logger":"elastic-apm-node","ecs.version":"8.10.0","agentVersion":"4.7.3","env":{"pid":74532,"proctitle":"node","os":"darwin 23.6.0","arch":"arm64","host":"peach.local","timezone":"UTC-0700","runtime":"Node.js v18.20.4"},"config":{"captureExceptions":{"source":"start","value":true},"centralConfig":{"source":"start","value":false},"logLevel":{"source":"default","value":"info","commonName":"log_level"},"metricsInterval":{"source":"start","value":0},"serverUrl":{"source":"default","value":"http://127.0.0.1:8200/","commonName":"server_url"},"secretToken":{"source":"start","value":"[REDACTED]","commonName":"secret_token"},"serviceName":{"source":"start","value":"test","commonName":"service_name"},"serviceVersion":{"source":"default","value":"4.7.3","commonName":"service_version"}},"activationMethod":"require","message":"Elastic APM Node.js Agent v4.7.3"}
{"log.level":"error","@timestamp":"2024-09-16T21:39:38.919Z","log.logger":"elastic-apm-node","ecs.version":"8.10.0","message":"APM Server transport error: error fetching APM Server version: connect ECONNREFUSED 127.0.0.1:8200"}
TAP version 13
# app.use('/') - GET /
ok 1 has a transaction
ok 2 transaction name is GET unknown route
ok 3 transaction type is request
ok 4 null
ok 5 should have expected response body
# app.use('/') - POST /
ok 6 has a transaction
ok 7 transaction name is POST unknown route
ok 8 transaction type is request
ok 9 null
ok 10 should have expected response body
# app.get('/') - GET /
ok 11 has a transaction
ok 12 transaction name is GET /
ok 13 transaction type is request
ok 14 null
ok 15 should have expected response body
# app.post('/') - POST /
ok 16 has a transaction
ok 17 transaction name is POST /
ok 18 transaction type is request
ok 19 null
ok 20 should have expected response body
# app.head('/') - HEAD /
ok 21 has a transaction
ok 22 transaction name is HEAD /
ok 23 transaction type is request
ok 24 null
ok 25 should have expected response body
# app.use('/foo/:id') - GET /foo/42
ok 26 has a transaction
ok 27 transaction name is GET /foo/:id
ok 28 transaction type is request
ok 29 null
ok 30 should have expected response body
# app.use('/foo/:id') - POST /foo/42
ok 31 has a transaction
ok 32 transaction name is POST /foo/:id
ok 33 transaction type is request
ok 34 null
ok 35 should have expected response body
# app.get('/foo/:id') - GET /foo/42
ok 36 has a transaction
ok 37 transaction name is GET /foo/:id
ok 38 transaction type is request
ok 39 null
ok 40 should have expected response body
# app.post('/foo/:id') - POST /foo/42
ok 41 has a transaction
ok 42 transaction name is POST /foo/:id
ok 43 transaction type is request
ok 44 null
ok 45 should have expected response body
# app.head('/foo/:id') - HEAD /foo/42
ok 46 has a transaction
ok 47 transaction name is HEAD /foo/:id
ok 48 transaction type is request
ok 49 null
ok 50 should have expected response body
# app.use('/') => app.use('/') - GET /
ok 51 has a transaction
ok 52 transaction name is GET unknown route
ok 53 transaction type is request
ok 54 null
ok 55 should have expected response body
# app.use('/') => app.use('/') - POST /
ok 56 has a transaction
ok 57 transaction name is POST unknown route
ok 58 transaction type is request
ok 59 null
ok 60 should have expected response body
# app.use('/') => app.get('/') - GET /
ok 61 has a transaction
ok 62 transaction name is GET /
ok 63 transaction type is request
ok 64 null
ok 65 should have expected response body
# app.use('/') => app.post('/') - POST /
ok 66 has a transaction
ok 67 transaction name is POST /
ok 68 transaction type is request
ok 69 null
ok 70 should have expected response body
# app.use('/') => app.head('/') - HEAD /
ok 71 has a transaction
ok 72 transaction name is HEAD /
ok 73 transaction type is request
ok 74 null
ok 75 should have expected response body
# app.use('/') => app.use('/foo/:id') - GET /foo/42
ok 76 has a transaction
ok 77 transaction name is GET /foo/:id
ok 78 transaction type is request
ok 79 null
ok 80 should have expected response body
# app.use('/') => app.use('/foo/:id') - POST /foo/42
ok 81 has a transaction
ok 82 transaction name is POST /foo/:id
ok 83 transaction type is request
ok 84 null
ok 85 should have expected response body
# app.use('/') => app.get('/foo/:id') - GET /foo/42
ok 86 has a transaction
ok 87 transaction name is GET /foo/:id
ok 88 transaction type is request
ok 89 null
ok 90 should have expected response body
# app.use('/') => app.post('/foo/:id') - POST /foo/42
ok 91 has a transaction
ok 92 transaction name is POST /foo/:id
ok 93 transaction type is request
ok 94 null
ok 95 should have expected response body
# app.use('/') => app.head('/foo/:id') - HEAD /foo/42
ok 96 has a transaction
ok 97 transaction name is HEAD /foo/:id
ok 98 transaction type is request
ok 99 null
ok 100 should have expected response body
# app.use('/sub') => app.use('/') - GET /sub
ok 101 has a transaction
ok 102 transaction name is GET /sub
ok 103 transaction type is request
ok 104 null
ok 105 should have expected response body
# app.use('/sub') => app.use('/') - POST /sub
ok 106 has a transaction
ok 107 transaction name is POST /sub
ok 108 transaction type is request
ok 109 null
ok 110 should have expected response body
# app.use('/sub') => app.get('/') - GET /sub
ok 111 has a transaction
ok 112 transaction name is GET /sub
ok 113 transaction type is request
ok 114 null
ok 115 should have expected response body
# app.use('/sub') => app.post('/') - POST /sub
ok 116 has a transaction
ok 117 transaction name is POST /sub
ok 118 transaction type is request
ok 119 null
ok 120 should have expected response body
# app.use('/sub') => app.head('/') - HEAD /sub
ok 121 has a transaction
ok 122 transaction name is HEAD /sub
ok 123 transaction type is request
ok 124 null
ok 125 should have expected response body
# app.use('/sub') => app.use('/foo/:id') - GET /sub/foo/42
ok 126 has a transaction
ok 127 transaction name is GET /sub/foo/:id
ok 128 transaction type is request
ok 129 null
ok 130 should have expected response body
# app.use('/sub') => app.use('/foo/:id') - POST /sub/foo/42
ok 131 has a transaction
ok 132 transaction name is POST /sub/foo/:id
ok 133 transaction type is request
ok 134 null
ok 135 should have expected response body
# app.use('/sub') => app.get('/foo/:id') - GET /sub/foo/42
ok 136 has a transaction
ok 137 transaction name is GET /sub/foo/:id
ok 138 transaction type is request
ok 139 null
ok 140 should have expected response body
# app.use('/sub') => app.post('/foo/:id') - POST /sub/foo/42
ok 141 has a transaction
ok 142 transaction name is POST /sub/foo/:id
ok 143 transaction type is request
ok 144 null
ok 145 should have expected response body
# app.use('/sub') => app.head('/foo/:id') - HEAD /sub/foo/42
ok 146 has a transaction
ok 147 transaction name is HEAD /sub/foo/:id
ok 148 transaction type is request
ok 149 null
ok 150 should have expected response body
# app.use('/sub/:id') => app.use('/') - GET /sub/42
ok 151 has a transaction
ok 152 transaction name is GET /sub/:id
ok 153 transaction type is request
ok 154 null
ok 155 should have expected response body
# app.use('/sub/:id') => app.use('/') - POST /sub/42
ok 156 has a transaction
ok 157 transaction name is POST /sub/:id
ok 158 transaction type is request
ok 159 null
ok 160 should have expected response body
# app.use('/sub/:id') => app.get('/') - GET /sub/42
ok 161 has a transaction
ok 162 transaction name is GET /sub/:id
ok 163 transaction type is request
ok 164 null
ok 165 should have expected response body
# app.use('/sub/:id') => app.post('/') - POST /sub/42
ok 166 has a transaction
ok 167 transaction name is POST /sub/:id
ok 168 transaction type is request
ok 169 null
ok 170 should have expected response body
# app.use('/sub/:id') => app.head('/') - HEAD /sub/42
ok 171 has a transaction
ok 172 transaction name is HEAD /sub/:id
ok 173 transaction type is request
ok 174 null
ok 175 should have expected response body
# app.use('/sub/:id') => app.use('/foo/:id') - GET /sub/42/foo/42
ok 176 has a transaction
ok 177 transaction name is GET /sub/:id/foo/:id
ok 178 transaction type is request
ok 179 null
ok 180 should have expected response body
# app.use('/sub/:id') => app.use('/foo/:id') - POST /sub/42/foo/42
ok 181 has a transaction
ok 182 transaction name is POST /sub/:id/foo/:id
ok 183 transaction type is request
ok 184 null
ok 185 should have expected response body
# app.use('/sub/:id') => app.get('/foo/:id') - GET /sub/42/foo/42
ok 186 has a transaction
ok 187 transaction name is GET /sub/:id/foo/:id
ok 188 transaction type is request
ok 189 null
ok 190 should have expected response body
# app.use('/sub/:id') => app.post('/foo/:id') - POST /sub/42/foo/42
ok 191 has a transaction
ok 192 transaction name is POST /sub/:id/foo/:id
ok 193 transaction type is request
ok 194 null
ok 195 should have expected response body
# app.use('/sub/:id') => app.head('/foo/:id') - HEAD /sub/42/foo/42
ok 196 has a transaction
ok 197 transaction name is HEAD /sub/:id/foo/:id
ok 198 transaction type is request
ok 199 null
ok 200 should have expected response body
# error intercept
ok 201 has the expected error
ok 202 captured data with error
ok 203 captured data has the request object
ok 204 has a transaction
ok 205 transaction name is GET /
ok 206 transaction type is request
ok 207 null
ok 208 got correct body from error handler middleware
# ignore 404 errors
ok 209 has a transaction
ok 210 transaction name is GET unknown route
ok 211 transaction type is request
ok 212 null
ok 213 got correct body from error handler middleware
# ignore invalid errors
ok 214 has a transaction
ok 215 transaction name is GET /
ok 216 transaction type is request
ok 217 null
ok 218 got correct body from error handler middleware
# do not inherit past route names
ok 219 has a transaction
ok 220 transaction name is GET /
ok 221 transaction type is request
ok 222 null
ok 223 got correct body from error handler middleware
# sub-routers include base path
ok 224 has a transaction
ok 225 transaction name is GET /hello/:name
ok 226 transaction type is request
ok 227 null
ok 228 got correct body
# sub-routers throw exception
ok 229 has a transaction
ok 230 transaction name is GET /api/:name
ok 231 transaction type is request
ok 232 null
Error: hello
    at Test.<anonymous> (/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:357:15)
    at Test.run (/Users/trentm/el/apm-agent-nodejs3/node_modules/tape/lib/test.js:126:28)
    at Immediate.next (/Users/trentm/el/apm-agent-nodejs3/node_modules/tape/lib/results.js:158:7)
    at process.processImmediate (node:internal/timers:476:21)
    at process.callbackTrampoline (node:internal/async_hooks:128:17)
# sub-router handler calls next(exception)
ok 233 has a transaction
ok 234 transaction name is GET /api/:name
ok 235 transaction type is request
ok 236 null
Error: boom
    at /Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:405:10
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/route.js:159:13)
    at Route.dispatch (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/route.js:119:3)
    at handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:428:11)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:293:15
    at param (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:593:14)
    at param (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:603:14)
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:653:3)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at router (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:59:12)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/application.js:179:15)
    at Server.app (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/express.js:38:9)
    at Server.emit (node:events:517:28)
    at Server.emit (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/http-shared.js:162:19)
    at parserOnIncoming (node:_http_server:1130:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
# sub-router handler calls next(non-exception)
ok 237 has a transaction
ok 238 transaction name is GET /api/:name
ok 239 transaction type is request
ok 240 null
this is some truthy value that is not "route" or "router"
# sub-router handler calls next("route")
ok 241 has a transaction
ok 242 transaction name is GET /api/other-endpoint
ok 243 transaction type is request
ok 244 null
ok 245 got correct body
# expose app.use handle properties
TypeError: Cannot read properties of undefined (reading 'stack')
    at handle (/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:512:35)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at router (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:59:12)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/application.js:179:15)
    at Server.app (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/express.js:38:9)
    at Server.emit (node:events:517:28)
    at Server.emit (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/http-shared.js:162:19)
    at parserOnIncoming (node:_http_server:1130:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17) {
  [Symbol(ElasticAPMErrorReported)]: true
}
/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:562
    throw err;
    ^

TypeError: Cannot read properties of undefined (reading 'stack')
    at handle (/Users/trentm/el/apm-agent-nodejs3/test/instrumentation/modules/express/basic.test.js:512:35)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at router (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:59:12)
    at handle (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/modules/express.js:80:25)
    at Layer.handleRequest (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/lib/layer.js:145:17)
    at trimPrefix (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:337:13)
    at /Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:295:9
    at processParams (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:575:12)
    at next (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:289:5)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/router/index.js:183:3)
    at Function.handle (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/application.js:179:15)
    at Server.app (/Users/trentm/el/apm-agent-nodejs3/node_modules/express/lib/express.js:38:9)
    at Server.emit (node:events:517:28)
    at Server.emit (/Users/trentm/el/apm-agent-nodejs3/lib/instrumentation/http-shared.js:162:19)
    at parserOnIncoming (node:_http_server:1130:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17) {
  [Symbol(ElasticAPMErrorReported)]: true
}

Node.js v18.20.4
trentm added a commit that referenced this issue Sep 16, 2024
We don't yet support instrumenting express@5. 5.0.0 was recently released.
Our TAV config was including express@5 in tests.

Refs: #4238
trentm added a commit that referenced this issue Sep 17, 2024
We don't yet support instrumenting express@5. 5.0.0 was recently released.
Our TAV config was including express@5 in tests.

Refs: #4238
david-luna pushed a commit that referenced this issue Oct 8, 2024
We don't yet support instrumenting express@5. 5.0.0 was recently released.
Our TAV config was including express@5 in tests.

Refs: #4238
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant