如何将 NewRelic 集成到与 Webpack 捆绑的 Node Typescript Express 服务器中?

Posted

技术标签:

【中文标题】如何将 NewRelic 集成到与 Webpack 捆绑的 Node Typescript Express 服务器中?【英文标题】:How do I integrate NewRelic into a Node Typescript Express server bundled with Webpack? 【发布时间】:2020-03-04 08:39:40 【问题描述】:

坦率地说,我都试过了。我不是 Webpack 的高手,但是这些年来我在配置新项目方面似乎相处得很好。

我现在似乎无法将 NewRelic 服务设置到现有的 Node/Typescript/Express/Webpack 应用程序中。

就目前而言,我的应用程序被很好地捆绑到我的 /dist 文件夹中的单个文件中,并且运行快速灵活。似乎 New Relic 推出的这个“节点代理”不能很好地与 Typescript 导入配合使用。

Webpack 配置

const path = require('path');
const webpack = require('webpack');
const nodeExternals = require('webpack-node-externals');
const NodemonPlugin = require ('nodemon-webpack-plugin');

module.exports = (env = ) => 
const config = 
    entry: ['./src/app.ts'],
    mode: env.development ? 'development' : 'production',
    target: 'node',
    devtool: env.development ? 'inline-source-map' : false,
    resolve: 
        extensions: ['.ts', '.js'],
        modules: ['node_modules', 'src', 'package.json'],
    ,
    module: 
        rules: [
            
                test: /\.ts$/,
                use: ['ts-loader', 'eslint-loader'],
                // exclude: /node_modules/,
            ,
        ],
    ,
    plugins: [],
    externals: [ 'newrelic', nodeExternals() ]
;

if (env.nodemon) 
    config.watch = true;
    config.plugins.push(new NodemonPlugin())

return config;
;
存在标准的 /project_root/.newrelic 文件 CircleCi 选择了这个项目并从 package.json ==> "webpack" 运行 "build:ci" 脚本 输出是/dist/main.js

参考资料https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/install-nodejs-agent https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration https://discuss.newrelic.com/t/node-agent-fails-with-webpack/24874

【问题讨论】:

【参考方案1】:

您的应用程序起点的第一行应该是

import newrelic from 'newrelic';

当然,先运行 npm install newrelic --save

然后,在 repo 的根目录(在 src 之外)创建一个 newrelic.js 文件。

然后你输入如下细节:

'use strict'
exports.config = 
  app_name: ['appName'],
  license_key: '1234567890',
  allow_all_headers: true,
  attributes: 
    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*'
    ]
  

【讨论】:

以上是关于如何将 NewRelic 集成到与 Webpack 捆绑的 Node Typescript Express 服务器中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Jointjs 与 Vue 2 和 webpack 集成

如何将插件应用于gradle中的一种风格?

如何将WordPress集成到Webpack中?

如何将 TypeScript WebPack ts-loader 与 Angular2 @View 样式集成?

如何将 vue-cli 与同一个项目中现有的不相关 webpack 设置集成?

Pentaho 数据集成:错误处理