# Span Trace showing instruments in commonjs but not in ECMA script

**URL:** <https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171>\
**Category:** APM\
**Tags:** elastic-stack-monitoring, nodejs\
**Created:** [September 6, 2024, 5:53pm UTC](https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171 "2024-09-06T17:53:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Amol\_Nagotkar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amol_nagotkar/32/124188_2.png) [@Amol\_Nagotkar](https://discuss.elastic.co/u/Amol_Nagotkar)\
**Post date:** [September 6, 2024, 5:53pm UTC](https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171/1 "2024-09-06T17:53:02Z")

</div>

Hi all,

Mongo version 4.4.25  
mongo node package version 4.4.1  
Trace Sample showing api request with instrument like http,mongo & redis with commonjs, **BUT NOT WITH ECMAScript module support.**

I read this doc- [ECMAScript module support | APM Node.js Agent Reference [4.x] | Elastic](https://www.elastic.co/guide/en/apm/agent/nodejs/current/esm.html)

**But no luck. I added below line in package.json also**

```
"start": "node app.js --experimental-loader=elastic-apm-node/loader.mjs server.mjs",

```

----------app.js -----------

// Import ES modules  
import express from 'express';  
import './apm.js'; // Assuming apm.js exports itself automatically  
import cors from 'cors';  
import bodyParser from 'body-parser';  
import { MongoClient } from 'mongodb';  
const app = express();  
import { Redis } from "ioredis"  
const redis = new Redis('redis://localhost:6379'); // Connect to Redis

// Redis Event Listeners  
redis.on('connect', () =\> {  
console.log('Connected to Redis');  
});

redis.on('error', (err) =\> {  
console.error('Redis connection error:', err);  
});

const mongoUri = 'mongodb://localhost:27017';  
const client = new MongoClient(mongoUri);  
app.use(cors());  
app.use(bodyParser.urlencoded({ extended: true }));

client.on('serverClosed', () =\> {  
console.log('MongoDB server closed');  
});

client.on('error', (err) =\> {  
console.error('MongoDB error', err);  
});

client.on('timeout', () =\> {  
console.error('MongoDB connection timed out');  
});

app.get('/users', async (req, res) =\> {  
try {  
await client.connect();

```
  const cachedUsers = await redis.get('users');
  if (cachedUsers) {
    console.log('Returning users from Redis cache');
    return res.json(JSON.parse(cachedUsers));
  }
  
const db = client.db('mydb');
const users = await db.collection('users').find({}).toArray();

console.log('MongoDB query success');
res.json(users);

```

} catch (err) {  
console.error('MongoDB query failed', err);  
res.status(500).send('Error retrieving users');  
}  
});  
app.listen(3100, () =\> {  
console.log('Server is running on port 3100');  
});

-----------apm.js------------  
import apm from 'elastic-apm-node'  
apm.start({  
serviceName: 'Test app',  
secretToken: '',  
serverUrl: '[http://elastic:password@127.0.0.1:8200](http://elastic:password@127.0.0.1:8200)',  
environment: 'local',  
logLevel: 'debug',  
active: true,  
instrument: true,  
captureBody: 'all',  
captureSpanStackTraces: true,  
exitSpanMinDuration: '0ms',  
spanFramesMinDuration: '-1ms', // Capture all spans  
transactionMaxSpans: 1000 // Increase span limit if needed  
})  
export const APM = apm

* * *

My elasticsearch, kibana is working fine.  
Below attached image is of commonjs.  
I am expecting same output for ECMA script.

i checked the logs.. for commonjs i can see mongodb logs, but the same is not present for ECAM script.  
Let me know, if i am missing anything.  
Thanks in advance.

 ![Screenshot from 2024-09-06 23-19-05](https://us1.discourse-cdn.com/elastic/original/3X/d/5/d5c150e857b315f30e60925ee9195b7cd49493e0.png)

---

<div class="post-metadata">

**Author:** ![Amol\_Nagotkar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amol_nagotkar/32/124188_2.png) [@Amol\_Nagotkar](https://discuss.elastic.co/u/Amol_Nagotkar)\
**Post date:** [September 9, 2024, 5:43am UTC](https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171/2 "2024-09-09T05:43:24Z")

</div>

From #Elastic Agent to #APM

---

<div class="post-metadata">

**Author:** ![Amol\_Nagotkar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amol_nagotkar/32/124188_2.png) [@Amol\_Nagotkar](https://discuss.elastic.co/u/Amol_Nagotkar)\
**Post date:** [September 9, 2024, 5:43am UTC](https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171/3 "2024-09-09T05:43:24Z")

</div>

Added #nodejs

---

<div class="post-metadata">

**Author:** ![Amol\_Nagotkar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amol_nagotkar/32/124188_2.png) [@Amol\_Nagotkar](https://discuss.elastic.co/u/Amol_Nagotkar)\
**Post date:** [September 9, 2024, 9:10am UTC](https://discuss.elastic.co/t/span-trace-showing-instruments-in-commonjs-but-not-in-ecma-script/366171/4 "2024-09-09T09:10:14Z")

</div>

Solved this issue.. just use require instead of import for redis, mongo, etc.  
no need to specify anything in package.json file

thank you.
