Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

The Uninstrumented Modules Banner from the Node Agent


#1

Why am I seeing this banner?

You may have run across this banner and disregarded it because your data was showing up in APM. This banner appears when our agent noticed other modules loaded before it. This can negatively affect instrumentation so it’s best if you fix it. If you have seen this banner, let’s take a look at some possible causes and try to nix it.

And you might see a similar message in your New Relic logs.

Take Action:

So you went to the entry file of your app and either you put require('newrelic'); as line numero uno or you started scratching your head because it is the first line already.

Before you try any of these scenarios, this is your gentle nudge to upgrade the Node Agent if you’re on an older version.

Scenario 1: You are using Babel or another Transpiler

You might want to check the compiled output to see if New Relic is really and truly the first line after being compiled.

You can also use the require flag with New Relic ensuring that we are getting required upon startup with something like this:

node --require newrelic app.js

Scenario 2: You are using Webpack or another module bundler

Module bundlers can change the order that New Relic is required, and depending on the way they function, they may also remove access to the hooks we need in order to instrument supported modules (like Express, Hapi, Restify, etc.) Take a look at the following Level Up post for more information about the Node.js APM agent and webpack:

Scenario 3 - Some Outdated Instances

If there are multiple instances reporting to the same app, and some that are outdated, simply get those old ones up to date.

Scenario 4 - Filename error

You have another file with the same name as the module. Fix: rename the file.

Scenario 5 - You are using CLS

If you are using Continuation-local Storage (CLS), this is a particular case where you would need to require CLS before newrelic.

Scenario 6 - Using conditional logic for New Relic can may cause it be loaded after other modules.

Try moving the conditional logic to your newrelic.js config file. For example:

if (process.env.NODE_ENV === ‘production’) {

module.exports.agent_enabled = true;

} else {

module.exports.agent_enabled = false;

}

Give that a go~!


My Node Transaction Names Look Funky And There Are Way Too Many