【问题标题】:Nodejs app with npm start script带有 npm 启动脚本的 Nodejs 应用程序
【发布时间】: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 的包装器来做到这一点。详情:

  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 有类似脚本{ "start" : "coffee server.coffee" } 的内容,我的脚本会将其替换为{ "start" : "coffee appdynamics.js" }。然后我的脚本会调用npm start,这会出错。

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

这是Use "coffee" instead of "node" command in production的后续问题

【问题讨论】:

  • 为什么不将其作为构建过程的一部分,将相关代码简单地注入到 server.js 文件中?您可以使用任何模板引擎、正则表达式替换等。Grunt、gulp、make 等等。
  • 感谢您抽出宝贵时间回复。原因是因为我在 PAAS 团队,只有我们知道 appdynamics 所需字段的值。此外,我们想让 appdynamics 无缝地提供给在我们平台上运行的 nodejs 应用程序。这样,应用程序开发人员就不必担心应用程序动态配置值。
  • 那完全有道理。无缝地做到这一点可能会很困难。

标签: node.js docker coffeescript appdynamics


【解决方案1】:
  • 编写一个名为appdynamics.coffee 的包装器
  • 将此包装器编译为.js
  • server.js 替换为appdynamics.js,将server.coffee 替换为appdynamics.coffee

这些操作之后

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

将是

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

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

将会

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

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2019-02-12
    • 2018-12-28
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多