New Relic Node.js agent code base. Developers are welcome to create pull requests here, please see our contributing guidelines. For New Relic technical support, please go to http://support.newrelic.com.
Apache License 2.0
969
stars
398
forks
source link
Cannot use with esbuild based application (AWS CDK) #2664
I'm trying to instrument custom events for nodejs based AWS ECS Tasks and Lambdas. I currently have successful lambda layer implementation but i am not able to send custom events using this method.
In order to do so i need to install newrelic into the main package.json. My AWS functions and tasks are created and managed using AWS CDK which uses esbuild in order to bundle and prepare my applications. The problem is when i attempt to import the function to record a custom event i get tons of build errors i can't seem to resolve.
I've tried all the following
import { recordCustomEvent } from "newrelic";
import newrelic from 'newrelic';
import * as NR from 'newrelic';
const NR = require('newrelic');
and they all result in these errors.
X [ERROR] No loader is configured for ".md" files: node_modules/newrelic/README.md
node_modules/newrelic/index.js:42:22:
42 │ const API = require(`./${apiPath}`)
╵ ~~~~~~~~~~~~~~
X [ERROR] No loader is configured for ".md" files: node_modules/newrelic/THIRD_PARTY_NOTICES.md
node_modules/newrelic/index.js:42:22:
42 │ const API = require(`./${apiPath}`)
╵ ~~~~~~~~~~~~~~
X [ERROR] Expected ";" but found "License"
node_modules/newrelic/LICENSE:1:40:
1 │ Apache License
│ ~~~~~~~
╵ ;
X [ERROR] Could not resolve "split"
node_modules/newrelic/bin/tracetractor:23:21:
23 │ , split = require('split')
If i use this to import
import * as NR from 'newrelic/esm-loader.mjs';
I get build warnings but it still builds. Unfortunately it won't run as it throws the following errors.
2024-10-16T16:53:55.766Z undefined ERROR Unhandled Promise Rejection
{
"errorType": "Runtime.UnhandledPromiseRejection",
"errorMessage": "TypeError: Invalid URL",
"reason": {
"errorType": "TypeError",
"errorMessage": "Invalid URL",
"code": "ERR_INVALID_URL",
"input": "lib/register.js",
"stack": [
"TypeError: Invalid URL",
" at new URL (node:internal/url:797:36)",
" at createHook2 (/var/task/index.js:12042:23)",
" at Object.<anonymous> (/var/task/index.js:12572:86)",
" at Module._compile (node:internal/modules/cjs/loader:1469:14)",
" at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)",
" at Module.load (node:internal/modules/cjs/loader:1288:32)",
" at Module._load (node:internal/modules/cjs/loader:1104:12)",
" at cjsLoader (node:internal/modules/esm/translators:346:17)",
" at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:286:7)",
" at ModuleJob.run (node:internal/modules/esm/module_job:234:25)"
]
},
"promise": {},
"stack": [
"Runtime.UnhandledPromiseRejection: TypeError: Invalid URL",
" at process.<anonymous> (file:///var/runtime/index.mjs:1276:17)",
" at process.emit (node:events:519:28)",
" at process.wrappedEmit [as emit] (/opt/nodejs/node_modules/newrelic/lib/instrumentation/core/globals.js:53:23)",
" at emitUnhandledRejection (node:internal/process/promises:250:13)",
" at throwUnhandledRejectionsMode (node:internal/process/promises:385:19)",
" at processPromiseRejections (node:internal/process/promises:470:17)",
" at process.processTicksAndRejections (node:internal/process/task_queues:96:32)"
]
}
Your Environment
ex: Browser name and version: AWS Lambda / ECS (Docker)
Description
I'm trying to instrument custom events for nodejs based AWS ECS Tasks and Lambdas. I currently have successful lambda layer implementation but i am not able to send custom events using this method.
In order to do so i need to install
newrelic
into the mainpackage.json
. My AWS functions and tasks are created and managed using AWS CDK which uses esbuild in order to bundle and prepare my applications. The problem is when i attempt to import the function to record a custom event i get tons of build errors i can't seem to resolve.I've tried all the following
and they all result in these errors.
If i use this to import
I get build warnings but it still builds. Unfortunately it won't run as it throws the following errors.
Your Environment