From b1e1d467e5e950e01536cd1b0f5f048d3330adb6 Mon Sep 17 00:00:00 2001 From: Arya Date: Tue, 2 Jun 2026 17:46:33 +0530 Subject: [PATCH 1/7] chore: verified Node.js require(esm) compatibility for ESM-only dependencies --- currencies.json | 7 +++---- .../integration/currencies/frameworks/got/app.js | 12 +++++++++++- .../currencies/frameworks/got/test_base.js | 6 +++++- .../currencies/protocols/http/node-fetch/app.js | 12 +++++++++++- .../protocols/http/node-fetch/test_base.js | 6 +++++- 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/currencies.json b/currencies.json index 4f74f9bec9..5bbbda0104 100644 --- a/currencies.json +++ b/currencies.json @@ -545,12 +545,11 @@ "versions": [ { "v": "15.0.5", - "esmOnly": true, "node": ">=22" }, { "v": "14.6.6", - "esmOnly": true + "node": ">=20" }, { "v": "11.8.6" @@ -890,7 +889,7 @@ "versions": [ { "v": "3.3.2", - "esmOnly": true + "node": ">=20" }, { "v": "2.7.0" @@ -1334,4 +1333,4 @@ } ] } -] \ No newline at end of file +] diff --git a/packages/collector/test/integration/currencies/frameworks/got/app.js b/packages/collector/test/integration/currencies/frameworks/got/app.js index 7c4dcd7219..4a38167034 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/app.js +++ b/packages/collector/test/integration/currencies/frameworks/got/app.js @@ -22,7 +22,17 @@ const app = express(); const logPrefix = `Got App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; -const got = require('got'); +let got; + +if (process.env.USE_REQUIRE_ESM === 'true') { + // got v14+ is ESM-only and uses Node.js native require(esm) to load on CJS app + // Node.js require(esm) support: v20.19.0+, v22.12.0+, v24.0.0+ + // Reference: https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/ + got = require('got').default; +} else { + got = require('got'); +} + if (process.env.WITH_STDOUT) { app.use(morgan(`${logPrefix}:method :url :status`)); } diff --git a/packages/collector/test/integration/currencies/frameworks/got/test_base.js b/packages/collector/test/integration/currencies/frameworks/got/test_base.js index 18ec0f3c7e..4f840f54f5 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/test_base.js +++ b/packages/collector/test/integration/currencies/frameworks/got/test_base.js @@ -4,6 +4,7 @@ 'use strict'; +const semver = require('semver'); const expect = require('chai').expect; const { retry, verifyHttpRootEntry, verifyExitSpan } = require('@_local/core/test/test_util'); const ProcessControls = require('@_local/collector/test/test_util/ProcessControls'); @@ -16,13 +17,16 @@ module.exports = function (name, version, isLatest) { let controls; before(async () => { + const isGotV14Plus = semver.gte(version, '14.0.0'); + controls = new ProcessControls({ dirname: __dirname, useGlobalAgent: true, env: { LIBRARY_LATEST: isLatest, LIBRARY_VERSION: version, - LIBRARY_NAME: name + LIBRARY_NAME: name, + USE_REQUIRE_ESM: isGotV14Plus ? 'true' : 'false' } }); diff --git a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js index c7aaa10823..5c32485ffd 100644 --- a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js +++ b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js @@ -25,7 +25,17 @@ const app = express(); const logPrefix = `fetch App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; -const fetch = require('node-fetch'); + +// node-fetch v3+ is ESM-only and uses Node.js native require(esm) to load on CJS app +// Reference: https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/ +let fetch; +if (process.env.USE_REQUIRE_ESM === 'true') { + const fetchModule = require('node-fetch'); + fetch = fetchModule.default; +} else { + // For node-fetch v2 and below: Use traditional CommonJS require + fetch = require('node-fetch'); +} if (process.env.WITH_STDOUT) { app.use(morgan(`${logPrefix}:method :url :status`)); diff --git a/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js b/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js index c208b4d960..6630c54dc5 100644 --- a/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js +++ b/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js @@ -4,6 +4,7 @@ 'use strict'; +const semver = require('semver'); const expect = require('chai').expect; const config = require('@_local/core/test/config'); @@ -20,13 +21,16 @@ module.exports = function (name, version, isLatest) { let controls; before(async () => { + const isNodeFetchV3Plus = semver.gte(version, '3.0.0'); + controls = new ProcessControls({ dirname: __dirname, useGlobalAgent: true, env: { LIBRARY_VERSION: version, LIBRARY_NAME: name, - LIBRARY_LATEST: isLatest + LIBRARY_LATEST: isLatest, + USE_REQUIRE_ESM: isNodeFetchV3Plus ? 'true' : 'false' } }); From 5bc7464749929aff56f6752be8a24ac994231e36 Mon Sep 17 00:00:00 2001 From: Arya Date: Tue, 2 Jun 2026 17:54:59 +0530 Subject: [PATCH 2/7] chore: verified Node.js require(esm) compatibility for ESM-only dependencies --- .../collector/test/integration/currencies/frameworks/got/app.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/collector/test/integration/currencies/frameworks/got/app.js b/packages/collector/test/integration/currencies/frameworks/got/app.js index 4a38167034..430d7682ce 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/app.js +++ b/packages/collector/test/integration/currencies/frameworks/got/app.js @@ -26,7 +26,6 @@ let got; if (process.env.USE_REQUIRE_ESM === 'true') { // got v14+ is ESM-only and uses Node.js native require(esm) to load on CJS app - // Node.js require(esm) support: v20.19.0+, v22.12.0+, v24.0.0+ // Reference: https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/ got = require('got').default; } else { From cdd1d25e60437f9ff49955770204093f004e9b3b Mon Sep 17 00:00:00 2001 From: Arya Date: Tue, 2 Jun 2026 17:56:15 +0530 Subject: [PATCH 3/7] chore: verified Node.js require(esm) compatibility for ESM-only dependencies --- currencies.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/currencies.json b/currencies.json index 5bbbda0104..66c3a8915f 100644 --- a/currencies.json +++ b/currencies.json @@ -549,7 +549,7 @@ }, { "v": "14.6.6", - "node": ">=20" + "node": ">=20.19" }, { "v": "11.8.6" @@ -889,7 +889,7 @@ "versions": [ { "v": "3.3.2", - "node": ">=20" + "node": ">=20.19" }, { "v": "2.7.0" From 911140cc2eaebeff7d6c41b97328ba51e110d333 Mon Sep 17 00:00:00 2001 From: Arya Date: Wed, 3 Jun 2026 15:53:40 +0530 Subject: [PATCH 4/7] chore: require esm without default --- package-lock.json | 19 ++++++------------- package.json | 3 +-- .../test/integration/misc/native_esm/app.js | 2 -- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index f43fe71308..54b4f6158f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,8 +103,7 @@ "semver": "7.5.4", "sinon": "15.2.0", "sinon-chai": "3.7.0", - "square-calc": "3.2.1", - "square-calc-v2": "npm:square-calc@2.4.0", + "square-calc": "3.3.1", "stealthy-require": "1.1.1", "typescript": "5.9.3", "underscore": "1.13.1", @@ -31195,17 +31194,11 @@ "dev": true }, "node_modules/square-calc": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/square-calc/-/square-calc-3.2.1.tgz", - "integrity": "sha512-43TtHbgIdE5V9hPsIMRPXFcxQvP0QXZ2MjoI/xak3YiIJ4GMsdhFwXnShM3CCcIovaOd35KzF+xxQX0urACHqw==", - "dev": true - }, - "node_modules/square-calc-v2": { - "name": "square-calc", - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/square-calc/-/square-calc-2.4.0.tgz", - "integrity": "sha512-9ud3FeFngJmIpEsiep4lvNhw1NvKLtirowvaMomMeHjyzJckDRbSbLkFv3Jjae6j+ZtxTd2eJvO8izkdpGCDDA==", - "dev": true + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/square-calc/-/square-calc-3.3.1.tgz", + "integrity": "sha512-x329+gUanrlP77wqRv3ckVG/KP6MEg6xrPfr6tAeKLvxX+cv6tXbURgeV7CevzrsKpjV9FvG9FPljqBbED7DEw==", + "dev": true, + "license": "MIT" }, "node_modules/ssri": { "version": "12.0.0", diff --git a/package.json b/package.json index aa0f6f0b34..90329bc600 100644 --- a/package.json +++ b/package.json @@ -160,8 +160,7 @@ "semver": "7.5.4", "sinon": "15.2.0", "sinon-chai": "3.7.0", - "square-calc": "3.2.1", - "square-calc-v2": "npm:square-calc@2.4.0", + "square-calc": "3.3.1", "stealthy-require": "1.1.1", "typescript": "5.9.3", "underscore": "1.13.1", diff --git a/packages/collector/test/integration/misc/native_esm/app.js b/packages/collector/test/integration/misc/native_esm/app.js index 7b89fddee4..0ba6db94b5 100644 --- a/packages/collector/test/integration/misc/native_esm/app.js +++ b/packages/collector/test/integration/misc/native_esm/app.js @@ -10,8 +10,6 @@ process.on('SIGTERM', () => { process.exit(0); }); -const mock = require('@_local/core/test/test_util/mockRequire'); -mock('square-calc', 'square-calc-v2'); require('@instana/collector')(); const express = require('express'); const morgan = require('morgan'); From 1ec259cbeee1c91c447fc92dd0ba6570fdc03287 Mon Sep 17 00:00:00 2001 From: Arya Date: Wed, 3 Jun 2026 16:24:45 +0530 Subject: [PATCH 5/7] test: test --- .../test/tracing/misc/require-esm/app.js | 62 +++++++++ .../tracing/misc/require-esm/package.json | 9 ++ .../test/tracing/misc/require-esm/test.js | 13 ++ .../tracing/misc/require-esm/test_base.js | 124 ++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 packages/collector/test/tracing/misc/require-esm/app.js create mode 100644 packages/collector/test/tracing/misc/require-esm/package.json create mode 100644 packages/collector/test/tracing/misc/require-esm/test.js create mode 100644 packages/collector/test/tracing/misc/require-esm/test_base.js diff --git a/packages/collector/test/tracing/misc/require-esm/app.js b/packages/collector/test/tracing/misc/require-esm/app.js new file mode 100644 index 0000000000..81de643043 --- /dev/null +++ b/packages/collector/test/tracing/misc/require-esm/app.js @@ -0,0 +1,62 @@ +/* + * (c) Copyright IBM Corp. 2026 + */ + +'use strict'; + +// NOTE: c8 bug https://github.com/bcoe/c8/issues/166 +process.on('SIGTERM', () => { + process.disconnect(); + process.exit(0); +}); + +const agentPort = process.env.INSTANA_AGENT_PORT; + +require('@instana/collector')(); + +// Load ESM-only dependency using Node.js native require(esm) support +// got v14+ is ESM-only and exports a default export +const { default: got } = require('got'); + +const express = require('express'); +const port = require('@_local/collector/test/test_util/app-port')(); +const app = express(); +const logPrefix = `require(esm) test app (${process.pid}):\t`; + +function log() { + const args = Array.prototype.slice.call(arguments); + args[0] = `${logPrefix}${args[0]}`; + // eslint-disable-next-line no-console + console.log.apply(console, args); +} + +app.get('/', (req, res) => { + res.send('OK'); +}); + +app.get('/make-request', async (req, res) => { + const targetUrl = `http://127.0.0.1:${agentPort}/`; + + try { + const response = await got(targetUrl); + + log(`Request successful, status: ${response.statusCode}`); + res.json({ + success: true, + statusCode: response.statusCode, + url: targetUrl, + bodyLength: response.body.length + }); + } catch (error) { + log(`Request failed: ${error.message}`); + res.status(500).json({ + success: false, + error: error.message, + url: targetUrl + }); + } +}); + +app.listen(port, () => { + log(`Listening on port: ${port}`); +}); diff --git a/packages/collector/test/tracing/misc/require-esm/package.json b/packages/collector/test/tracing/misc/require-esm/package.json new file mode 100644 index 0000000000..a902b9e131 --- /dev/null +++ b/packages/collector/test/tracing/misc/require-esm/package.json @@ -0,0 +1,9 @@ +{ + "name": "require-esm-test", + "version": "1.0.0", + "description": "Test for Node.js require(esm) support", + "main": "app.js", + "dependencies": { + "got": "latest" + } +} diff --git a/packages/collector/test/tracing/misc/require-esm/test.js b/packages/collector/test/tracing/misc/require-esm/test.js new file mode 100644 index 0000000000..bca0b0680e --- /dev/null +++ b/packages/collector/test/tracing/misc/require-esm/test.js @@ -0,0 +1,13 @@ +/* + * (c) Copyright IBM Corp. 2026 + */ + +'use strict'; + +const config = require('@instana/core/test/config'); + +describe('tracing/misc/require-esm', function () { + this.timeout(config.getTestTimeout() * 2); + + require('./test_base')(); +}); diff --git a/packages/collector/test/tracing/misc/require-esm/test_base.js b/packages/collector/test/tracing/misc/require-esm/test_base.js new file mode 100644 index 0000000000..8d44266356 --- /dev/null +++ b/packages/collector/test/tracing/misc/require-esm/test_base.js @@ -0,0 +1,124 @@ +/* + * (c) Copyright IBM Corp. 2026 + */ + +'use strict'; + +const semver = require('semver'); +const expect = require('chai').expect; +const { supportedVersion } = require('@instana/core').tracing; +const config = require('@instana/core/test/config'); +const { retry, expectExactlyOneMatching } = require('@instana/core/test/test_util'); +const ProcessControls = require('@instana/collector/test/test_util/ProcessControls'); +const globalAgent = require('@instana/collector/test/globalAgent'); + +const supportsRequireESM = semver.gte(process.versions.node, '20.19.0'); +const mochaSuiteFn = supportedVersion(process.versions.node) && supportsRequireESM ? describe : describe.skip; + +module.exports = function () { + mochaSuiteFn('tracing/require(esm)', function () { + this.timeout(config.getTestTimeout() * 2); + + globalAgent.setUpCleanUpHooks(); + const agentControls = globalAgent.instance; + + describe('tracing enabled, no suppression', function () { + let controls; + + before(async () => { + controls = new ProcessControls({ + dirname: __dirname, + useGlobalAgent: true + }); + + await controls.startAndWaitForAgentConnection(); + }); + + beforeEach(async () => { + await agentControls.clearReceivedTraceData(); + }); + + after(async () => { + await controls.stop(); + }); + + afterEach(async () => { + await controls.clearIpcMessages(); + }); + + it('must trace HTTP requests made with ESM-only package loaded via require()', async () => { + const response = await controls.sendRequest({ + method: 'GET', + path: '/make-request' + }); + + expect(response.success).to.equal(true); + expect(response.statusCode).to.equal(200); + + await retry(async () => { + const spans = await agentControls.getSpans(); + + expect(spans).to.have.lengthOf(2); + + const httpEntry = expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.server'), + span => expect(span.k).to.equal(1), + span => expect(span.data.http.method).to.equal('GET'), + span => expect(span.data.http.url).to.match(/\/make-request/) + ]); + + const httpExit = expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.client'), + span => expect(span.k).to.equal(2), + span => expect(span.t).to.equal(httpEntry.t), + span => expect(span.p).to.equal(httpEntry.s), + span => expect(span.data.http.method).to.equal('GET'), + span => expect(span.data.http.url).to.include('127.0.0.1') + ]); + + expect(httpExit.data.http.status).to.equal(200); + expect(httpExit.ec).to.equal(0); + expect(httpEntry.ec).to.equal(0); + }); + }); + }); + + describe('tracing suppressed', function () { + let controls; + + before(async () => { + controls = new ProcessControls({ + dirname: __dirname, + useGlobalAgent: true + }); + + await controls.startAndWaitForAgentConnection(); + }); + + beforeEach(async () => { + await agentControls.clearReceivedTraceData(); + }); + + after(async () => { + await controls.stop(); + }); + + afterEach(async () => { + await controls.clearIpcMessages(); + }); + + it('should not trace when suppressed', async () => { + await controls.sendRequest({ + method: 'GET', + path: '/make-request', + suppressTracing: true + }); + + await retry(async () => { + const spans = await agentControls.getSpans(); + expect(spans).to.have.lengthOf(0); + }); + }); + }); + }); +}; From 541c70e6f77bb2d32d5ab3a63f28e85f74b81384 Mon Sep 17 00:00:00 2001 From: Arya Date: Wed, 3 Jun 2026 16:28:34 +0530 Subject: [PATCH 6/7] test: test --- currencies.json | 5 +++-- .../test/integration/currencies/frameworks/got/app.js | 10 +--------- .../currencies/frameworks/got/test_base.js | 6 +----- .../currencies/protocols/http/node-fetch/app.js | 11 +---------- .../currencies/protocols/http/node-fetch/test_base.js | 6 +----- .../collector/test/tracing/misc/require-esm/app.js | 2 +- 6 files changed, 8 insertions(+), 32 deletions(-) diff --git a/currencies.json b/currencies.json index 66c3a8915f..341ad519cd 100644 --- a/currencies.json +++ b/currencies.json @@ -545,11 +545,12 @@ "versions": [ { "v": "15.0.5", + "esmOnly": true, "node": ">=22" }, { "v": "14.6.6", - "node": ">=20.19" + "esmOnly": true }, { "v": "11.8.6" @@ -889,7 +890,7 @@ "versions": [ { "v": "3.3.2", - "node": ">=20.19" + "esmOnly": true }, { "v": "2.7.0" diff --git a/packages/collector/test/integration/currencies/frameworks/got/app.js b/packages/collector/test/integration/currencies/frameworks/got/app.js index 430d7682ce..a343d2fd3f 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/app.js +++ b/packages/collector/test/integration/currencies/frameworks/got/app.js @@ -22,15 +22,7 @@ const app = express(); const logPrefix = `Got App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; -let got; - -if (process.env.USE_REQUIRE_ESM === 'true') { - // got v14+ is ESM-only and uses Node.js native require(esm) to load on CJS app - // Reference: https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/ - got = require('got').default; -} else { - got = require('got'); -} +const got = require('got'); if (process.env.WITH_STDOUT) { app.use(morgan(`${logPrefix}:method :url :status`)); diff --git a/packages/collector/test/integration/currencies/frameworks/got/test_base.js b/packages/collector/test/integration/currencies/frameworks/got/test_base.js index 4f840f54f5..18ec0f3c7e 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/test_base.js +++ b/packages/collector/test/integration/currencies/frameworks/got/test_base.js @@ -4,7 +4,6 @@ 'use strict'; -const semver = require('semver'); const expect = require('chai').expect; const { retry, verifyHttpRootEntry, verifyExitSpan } = require('@_local/core/test/test_util'); const ProcessControls = require('@_local/collector/test/test_util/ProcessControls'); @@ -17,16 +16,13 @@ module.exports = function (name, version, isLatest) { let controls; before(async () => { - const isGotV14Plus = semver.gte(version, '14.0.0'); - controls = new ProcessControls({ dirname: __dirname, useGlobalAgent: true, env: { LIBRARY_LATEST: isLatest, LIBRARY_VERSION: version, - LIBRARY_NAME: name, - USE_REQUIRE_ESM: isGotV14Plus ? 'true' : 'false' + LIBRARY_NAME: name } }); diff --git a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js index 5c32485ffd..aa81068604 100644 --- a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js +++ b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js @@ -26,16 +26,7 @@ const logPrefix = `fetch App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; -// node-fetch v3+ is ESM-only and uses Node.js native require(esm) to load on CJS app -// Reference: https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/ -let fetch; -if (process.env.USE_REQUIRE_ESM === 'true') { - const fetchModule = require('node-fetch'); - fetch = fetchModule.default; -} else { - // For node-fetch v2 and below: Use traditional CommonJS require - fetch = require('node-fetch'); -} +const fetch = require('node-fetch'); if (process.env.WITH_STDOUT) { app.use(morgan(`${logPrefix}:method :url :status`)); diff --git a/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js b/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js index 6630c54dc5..c208b4d960 100644 --- a/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js +++ b/packages/collector/test/integration/currencies/protocols/http/node-fetch/test_base.js @@ -4,7 +4,6 @@ 'use strict'; -const semver = require('semver'); const expect = require('chai').expect; const config = require('@_local/core/test/config'); @@ -21,16 +20,13 @@ module.exports = function (name, version, isLatest) { let controls; before(async () => { - const isNodeFetchV3Plus = semver.gte(version, '3.0.0'); - controls = new ProcessControls({ dirname: __dirname, useGlobalAgent: true, env: { LIBRARY_VERSION: version, LIBRARY_NAME: name, - LIBRARY_LATEST: isLatest, - USE_REQUIRE_ESM: isNodeFetchV3Plus ? 'true' : 'false' + LIBRARY_LATEST: isLatest } }); diff --git a/packages/collector/test/tracing/misc/require-esm/app.js b/packages/collector/test/tracing/misc/require-esm/app.js index 81de643043..bb853b25e9 100644 --- a/packages/collector/test/tracing/misc/require-esm/app.js +++ b/packages/collector/test/tracing/misc/require-esm/app.js @@ -24,7 +24,7 @@ const app = express(); const logPrefix = `require(esm) test app (${process.pid}):\t`; function log() { - const args = Array.prototype.slice.call(arguments); +const args = Array.prototype.slice.call(arguments); args[0] = `${logPrefix}${args[0]}`; // eslint-disable-next-line no-console console.log.apply(console, args); From eec08a3757fcc0853c4043957a5378a93aa2daa1 Mon Sep 17 00:00:00 2001 From: Arya Date: Wed, 3 Jun 2026 16:33:03 +0530 Subject: [PATCH 7/7] test: test --- currencies.json | 2 +- .../test/integration/currencies/frameworks/got/app.js | 1 - .../integration/currencies/protocols/http/node-fetch/app.js | 1 - packages/collector/test/tracing/misc/require-esm/app.js | 5 +++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/currencies.json b/currencies.json index 341ad519cd..4f74f9bec9 100644 --- a/currencies.json +++ b/currencies.json @@ -1334,4 +1334,4 @@ } ] } -] +] \ No newline at end of file diff --git a/packages/collector/test/integration/currencies/frameworks/got/app.js b/packages/collector/test/integration/currencies/frameworks/got/app.js index a343d2fd3f..7c4dcd7219 100644 --- a/packages/collector/test/integration/currencies/frameworks/got/app.js +++ b/packages/collector/test/integration/currencies/frameworks/got/app.js @@ -23,7 +23,6 @@ const logPrefix = `Got App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; const got = require('got'); - if (process.env.WITH_STDOUT) { app.use(morgan(`${logPrefix}:method :url :status`)); } diff --git a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js index aa81068604..c7aaa10823 100644 --- a/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js +++ b/packages/collector/test/integration/currencies/protocols/http/node-fetch/app.js @@ -25,7 +25,6 @@ const app = express(); const logPrefix = `fetch App (${process.pid}):\t`; const agentPort = process.env.INSTANA_AGENT_PORT; - const fetch = require('node-fetch'); if (process.env.WITH_STDOUT) { diff --git a/packages/collector/test/tracing/misc/require-esm/app.js b/packages/collector/test/tracing/misc/require-esm/app.js index bb853b25e9..dfd1d2335d 100644 --- a/packages/collector/test/tracing/misc/require-esm/app.js +++ b/packages/collector/test/tracing/misc/require-esm/app.js @@ -15,7 +15,8 @@ const agentPort = process.env.INSTANA_AGENT_PORT; require('@instana/collector')(); // Load ESM-only dependency using Node.js native require(esm) support -// got v14+ is ESM-only and exports a default export +// 'got' is pure ESM from v14+. Since require(esm) returns the full Module Namespace Object +// rather than an unwrapped default function, we must explicitly destructure `.default`. const { default: got } = require('got'); const express = require('express'); @@ -24,7 +25,7 @@ const app = express(); const logPrefix = `require(esm) test app (${process.pid}):\t`; function log() { -const args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args[0] = `${logPrefix}${args[0]}`; // eslint-disable-next-line no-console console.log.apply(console, args);