【发布时间】:2016-07-26 21:34:56
【问题描述】:
我对 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 的包装器来做到这一点。详情:
我在我的 nodejs docker 映像中运行一个脚本,将应用程序的 package.json 中的条目文件名替换为“appdynamics.js”,其中 appdynamics.js 具有上述与 appdynamics 相关的 require 语句。 例如:
{scripts { "start" : "node server.js" }}将被替换为{scripts { "start" : "node appdynamics.js"}}然后,我“需要”appdynamics.js 中的“server.js”。
调用 npm start。
我唯一担心的是:
如果 package.json 有类似脚本{ "start" : "coffee server.coffee" } 的内容,我的脚本会将其替换为{ "start" : "coffee appdynamics.js" }。然后我的脚本会调用npm start,这会出错。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
为什么不将其作为构建过程的一部分,将相关代码简单地注入到 server.js 文件中?您可以使用任何模板引擎、正则表达式替换等。Grunt、gulp、make 等等。
-
感谢您抽出宝贵时间回复。原因是因为我在 PAAS 团队,只有我们知道 appdynamics 所需字段的值。此外,我们想让 appdynamics 无缝地提供给在我们平台上运行的 nodejs 应用程序。这样,应用程序开发人员就不必担心应用程序动态配置值。
-
那完全有道理。无缝地做到这一点可能会很困难。
标签: node.js docker coffeescript appdynamics