forked from newrelic/node-newrelic
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request newrelic#47 from mrickard/NEWRELIC-5806/add-source…
…-map-example Example of source map support
- Loading branch information
Showing
15 changed files
with
7,767 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
node_modules | ||
newrelic_agent.log | ||
.idea | ||
dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
dist | ||
node_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
module.exports = { | ||
env: { | ||
es2021: true, | ||
node: true | ||
}, | ||
extends: 'standard-with-typescript', | ||
overrides: [ | ||
], | ||
parserOptions: { | ||
ecmaVersion: 'latest', | ||
project: './tsconfig.json' | ||
}, | ||
rules: { | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
This is an example express web server written with TypeScript, demonstrating the advantages of enabling Node's source maps support for transpiled applications. | ||
|
||
To enable source maps support in your own transpiled application, add `--enable-source-maps` to the `node` command that starts your application. | ||
|
||
Why should you enable source maps support? When applications are developed with transpiled languages, any error stacktraces will typically point to files, lines, and functions within the built files, rather than the source files. | ||
|
||
Enabling source map support in Node.js can provide developers with a more meaningful error trace which points to lines and functions within the source code. | ||
|
||
This application demonstrates this clearly: | ||
|
||
1. Edit `newrelic.js` to add your New Relic INGEST-LICENSE key. | ||
2. Build the project with `npm run build`. | ||
3. Start with `npm run start:nomaps`--this command starts the application without source map support. | ||
4. In your web browser, visit http://localhost:3000/cats multiple times. | ||
|
||
The file `src/models/cats.ts` will randomly throw an error for roughly 25% of all requests, showing you a stack trace like this one: | ||
```shell | ||
Error: Failed to get all cats in model | ||
at /dist/models/cats.js:41:23 | ||
... (multiple functions in New Relic Node agent js files) | ||
at /dist/models/cats.js:39:35 | ||
at Generator.next (<anonymous>) | ||
``` | ||
Note that the trace refers to the built files in `/dist`. | ||
|
||
5. Stop the application, and restart with `npm run start:withmaps`. | ||
6. Visit http://localhost:3000/cats again multiple times, and you'll see a stack trace like | ||
```shell | ||
Error: Failed to get all cats in model | ||
at <anonymous> (/src/models/cats.ts:28:13) | ||
... (multiple functions in New Relic Node agent js files) | ||
at <anonymous> (/src/models/cats.ts:26:19) | ||
at Generator.next (<anonymous>) | ||
``` | ||
This stack trace points to specific functions and line numbers within your source files, so you can find errors more easily. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
'use strict' | ||
/** | ||
* New Relic agent configuration. | ||
* | ||
* See lib/config/default.js in the agent distribution for a more complete | ||
* description of configuration variables and their potential values. | ||
*/ | ||
exports.config = { | ||
/** | ||
* Array of application names. | ||
*/ | ||
app_name: ['Source Maps Example'], | ||
/** | ||
* Your New Relic license key. | ||
*/ | ||
license_key: '', | ||
logging: { | ||
/** | ||
* Level at which to log. 'trace' is most useful to New Relic when diagnosing | ||
* issues with the agent, 'info' and higher will impose the least overhead on | ||
* production applications. | ||
*/ | ||
level: 'info' | ||
}, | ||
/** | ||
* When true, all request headers except for those listed in attributes.exclude | ||
* will be captured for all traces, unless otherwise specified in a destination's | ||
* attributes include/exclude lists. | ||
*/ | ||
allow_all_headers: true, | ||
attributes: { | ||
/** | ||
* Prefix of attributes to exclude from all destinations. Allows * as wildcard | ||
* at end. | ||
* | ||
* NOTE: If excluding headers, they must be in camelCase form to be filtered. | ||
* | ||
* @name NEW_RELIC_ATTRIBUTES_EXCLUDE | ||
*/ | ||
exclude: [ | ||
'request.headers.cookie', | ||
'request.headers.authorization', | ||
'request.headers.proxyAuthorization', | ||
'request.headers.setCookie*', | ||
'request.headers.x*', | ||
'response.headers.cookie', | ||
'response.headers.authorization', | ||
'response.headers.proxyAuthorization', | ||
'response.headers.setCookie*', | ||
'response.headers.x*' | ||
] | ||
} | ||
} |
Oops, something went wrong.