2

我对nodejs很陌生。

在我的 dockerized 环境中,我想为 nodejs 应用程序提供 appdynamics 支持。这要求每个应用程序都需要以下内容作为其应用程序的第一行。

require("appdynamics").profile({
    controllerHostName: '<controller host name>',
      controllerPort: <controller port number>, 
      controllerSslEnabled: false,  // Set to true if controllerPort is SSL
      accountName: '<AppDynamics_account_name>',
      accountAccessKey: '<AppDynamics_account_key>', //required
      applicationName: 'your_app_name',
      tierName: 'choose_a_tier_name', 
      nodeName: 'choose_a_node_name', 
 });

我计划通过在应用程序的入口文件周围提供一个名为appdynamics.js的包装器来做到这一点。细节:

  1. 我在我的 nodejs docker 映像中运行一个脚本,将应用程序的 package.json 中的条目文件名替换为“appdynamics.js”,其中 appdynamics.js 具有上述与 appdynamics 相关的 require 语句。例如:{scripts { "start" : "node server.js" }}将替换为 {scripts { "start" : "node appdynamics.js"}}

  2. 然后,我“需要”appdynamics.js 中的“server.js”。

  3. 调用 npm start。

我唯一担心的是:

如果package.json有类似 scripts{ "start" : "coffee server.coffee" }的内容,我的脚本会将其替换为{ "start" : "coffee appdynamics.js" }. 然后我的脚本将调用npm start,这将出错。

解决这个问题的最佳方法是什么?

这是在生产中使用“coffee”而不是“node”命令的后续问题

4

1 回答 1

3
  • 编写一个名为appdynamics.coffee
  • 将此包装器编译为.js
  • 替换server.jsappdynamics.jsserver.coffee_appdynamics.coffee

在此操作之后

{
  "scripts": {
    "start": "node server.js"
  }
}

将会

{
  "scripts": {
    "start": "node appdynamics.js"
  }
}

{
  "scripts": {
    "start": "coffee server.coffee"
  }
}

将会

{
  "scripts": {
    "start": "coffee appdynamics.coffee"
  }
}
于 2016-07-28T06:30:52.303 回答