Skip to content

Commit 6edc5f9

Browse files
CatchMe2Mateusz Tkacz
and
Mateusz Tkacz
authored
fix: NewRelic setup for ESM (#1106)
Co-authored-by: Mateusz Tkacz <[email protected]>
1 parent 4f06e14 commit 6edc5f9

File tree

4 files changed

+6
-11
lines changed

4 files changed

+6
-11
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.DS_Store
2+
13
# Logs
24
logs
35
*.log

Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,5 @@ ENV NODE_ENV=production
6464
ENV NODE_PATH=.
6565

6666
USER node
67-
CMD [ "dumb-init", "node", "/home/node/app/src/server.js" ]
67+
68+
CMD ["dumb-init", "node", "--experimental-loader", "newrelic/esm-loader.mjs", "-r", "newrelic", "/home/node/app/src/server.js"]

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"start:dev": "cross-env NODE_ENV=development tsx --env-file=.env src/server.ts",
1818
"start:dev:watch": "cross-env NODE_ENV=development tsx watch --env-file=.env src/server.ts",
1919
"start:prod": "tsc && cross-env NODE_ENV=production node --env-file-if-exists=.env dist/src/server.js",
20+
"start:prod:newrelic": "tsc && cross-env NODE_ENV=production node --experimental-loader newrelic/esm-loader.mjs -r newrelic --env-file-if-exists=.env dist/src/server.js",
2021
"free-ports": "npx cross-port-killer 3000",
2122
"docker:start:dev": "docker compose up -d",
2223
"docker:stop:dev": "docker compose down",

src/server.ts

+1-10
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
1-
/* istanbul ignore file */
2-
31
import {
42
executeAndHandleGlobalErrors,
53
globalLogger,
64
resolveGlobalErrorLogObject,
75
} from '@lokalise/node-core'
86

9-
if (process.env.NEW_RELIC_ENABLED !== 'false') {
10-
// NewRelic performs magic by importing environment variables automatically
11-
// https://docs.newrelic.com/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration/#environment
12-
await import('newrelic')
13-
}
14-
157
import packageJson from '../package.json' with { type: 'json' }
168

179
import { getApp } from './app.js'
18-
import type { Config } from './infrastructure/config.js'
1910
import { getConfig } from './infrastructure/config.js'
2011

2112
async function start() {
2213
globalLogger.info('Starting application...')
23-
const config = executeAndHandleGlobalErrors<Config>(getConfig)
14+
const config = executeAndHandleGlobalErrors(getConfig)
2415
const app = await getApp({
2516
monitoringEnabled: config.app.metrics.isEnabled,
2617
enqueuedJobQueuesEnabled: true,

0 commit comments

Comments
 (0)