Зависимости AppDynamics (Node.js/Express) не работают при компиляции с помощью Webpack — кто-нибудь может подтвердить?

Кто-нибудь сталкивался с проблемами компиляции зависимостей Webpack при использовании библиотеки AppDynamics? И вы нашли способ обойти это? Я полагаю, что это проблема, связанная с их библиотекой.

При попытке установить пакет AppDynamics для мониторинга приложения Node.js/Express наш процесс сборки Webpack не может импортировать несколько зависимостей. В частности, вывод ошибок:

WARNING in ./node_modules/appdynamics/lib/core/agent.js 445:8-28
require.main.require is not supported by webpack.
 @ ./node_modules/appdynamics/index.js 1:17-44
 @ ./server.ts

ERROR in ./node_modules/appdynamics-zmq/lib/index.js
Module not found: Error: Can't resolve '../zmq' in '.../my-app/node_modules/appdynamics-zmq/lib'
 @ ./node_modules/appdynamics-zmq/lib/index.js 24:10-27
 @ ./node_modules/appdynamics-zmq/index.js
 @ ./node_modules/appdynamics/lib/libproxy/proxy-transport.js
 @ ./node_modules/appdynamics/lib/libproxy/libproxy.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/appdynamics-libagent/index.js
Module not found: Error: Can't resolve './appd_libagent' in '.../my-app/node_modules/appdynamics-libagent'
 @ ./node_modules/appdynamics-libagent/index.js 36:9-35
 @ ./node_modules/appdynamics/lib/libagent/libagent-connector.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/appdynamics-native/index.js
Module not found: Error: Can't resolve './appdynamics' in '.../my-app/node_modules/appdynamics-native'
 @ ./node_modules/appdynamics-native/index.js 29:10-34
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/appdynamics-protobuf/index.js
Module not found: Error: Can't resolve './protobuf_for_node' in '.../my-app/node_modules/appdynamics-protobuf'
 @ ./node_modules/appdynamics-protobuf/index.js 29:10-40
 @ ./node_modules/appdynamics/lib/libproxy/proxy-transport.js
 @ ./node_modules/appdynamics/lib/libproxy/libproxy.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/log4js/lib/appenders/hipchat.js
Module not found: Error: Can't resolve 'hipchat-notifier' in '.../my-app/node_modules/log4js/lib/appenders'
 @ ./node_modules/log4js/lib/appenders/hipchat.js 3:14-41
 @ ./node_modules/log4js/lib/appenders sync ^\.\/.*$
 @ ./node_modules/log4js/lib/log4js.js
 @ ./node_modules/appdynamics/lib/core/logger.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/log4js/lib/appenders/loggly.js
Module not found: Error: Can't resolve 'loggly' in '.../node_modules/log4js/lib/appenders'
 @ ./node_modules/log4js/lib/appenders/loggly.js 3:11-28
 @ ./node_modules/log4js/lib/appenders sync ^\.\/.*$
 @ ./node_modules/log4js/lib/log4js.js
 @ ./node_modules/appdynamics/lib/core/logger.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/log4js/lib/appenders/mailgun.js
Module not found: Error: Can't resolve 'mailgun-js' in '.../my-app/node_modules/log4js/lib/appenders'
 @ ./node_modules/log4js/lib/appenders/mailgun.js 34:14-35
 @ ./node_modules/log4js/lib/appenders sync ^\.\/.*$
 @ ./node_modules/log4js/lib/log4js.js
 @ ./node_modules/appdynamics/lib/core/logger.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/log4js/lib/appenders/smtp.js
Module not found: Error: Can't resolve 'nodemailer' in '.../my-app/node_modules/log4js/lib/appenders'
 @ ./node_modules/log4js/lib/appenders/smtp.js 4:13-34
 @ ./node_modules/log4js/lib/appenders sync ^\.\/.*$
 @ ./node_modules/log4js/lib/log4js.js
 @ ./node_modules/appdynamics/lib/core/logger.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

ERROR in ./node_modules/log4js/lib/appenders/slack.js
Module not found: Error: Can't resolve 'slack-node' in '.../node_modules/log4js/lib/appenders'
 @ ./node_modules/log4js/lib/appenders/slack.js 2:12-33
 @ ./node_modules/log4js/lib/appenders sync ^\.\/.*$
 @ ./node_modules/log4js/lib/log4js.js
 @ ./node_modules/appdynamics/lib/core/logger.js
 @ ./node_modules/appdynamics/lib/core/agent.js
 @ ./node_modules/appdynamics/index.js
 @ ./server.ts

В нашем проекте установлено: - Webpack v4.29.0 - Node.js v11.0.0 - Appdynamics v4.5

Использование Appdynamics находится в верхней части нашего файла сервера как:

// AppDynamics monitoring
require("appdynamics").profile({
  controllerHostName: ***
  controllerPort: 443, 
  controllerSslEnabled: true,  
  accountName: ****
  accountAccessKey: ***
  applicationName: ***
  tierName: ***
  nodeName: '01'
 });

И наша конфигурация Webpack:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: { server: './server.ts' },
  resolve: { extensions: ['.js', '.ts'] },
  target: 'node',
  // TO-DO: Enable "production" mode for going live with Universal
  mode: 'development',
  // this makes sure we include node_modules and other 3rd party libraries
  externals: [/node_modules/],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [{ test: /\.ts$/, loader: 'ts-loader' }]
  },
  plugins: [
  ]
};

До сих пор мы пытались понизить версию Webpack, понизить среду Node до 10.15 и использовать другие методы импорта для пакета AppDynamics, но это похоже на внутреннюю проблему библиотеки Appdynamics? Главный вопрос: кто-нибудь сталкивался с проблемами компиляции зависимостей Webpack при использовании библиотеки Appdynamics? И вы нашли способ обойти это?

Любая помощь или подсказки будут оценены ❤️


person Cody P    schedule 07.03.2019    source источник


Ответы (1)


Решение заключалось в добавлении «динамики приложения» к «внешним» в конфигурации Webpack: https://webpack.js.org/configuration/externals/

Это позволяет AppDynamics использовать требуемый импорт Node.js по умолчанию.

person Cody P    schedule 13.03.2019