Node.js ElasticBeanstalk/Nodej毁了我的一个月;需要强制更新或使钩子工作

Node.js ElasticBeanstalk/Nodej毁了我的一个月;需要强制更新或使钩子工作,node.js,amazon-elastic-beanstalk,Node.js,Amazon Elastic Beanstalk,几周来,我一直在尝试为节点模块的一些问题创建一个解决方案,这给我带来了一些我仍然不理解的麻烦。我的简单解决方法是将文件“Match.js”重命名为“Match.js”,这已被证明是有效的 问题是因为这需要在npm启动之前发生,部署失败并恢复到旧版本。我需要能够强制EB接受我的新版本,尽管启动序列失败,或者创建一个钩子,在npm启动之前重命名此文件。然而,我很难弄清楚钩子什么时候会开火: files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/21m

几周来,我一直在尝试为节点模块的一些问题创建一个解决方案,这给我带来了一些我仍然不理解的麻烦。我的简单解决方法是将文件“Match.js”重命名为“Match.js”,这已被证明是有效的

问题是因为这需要在npm启动之前发生,部署失败并恢复到旧版本。我需要能够强制EB接受我的新版本,尽管启动序列失败,或者创建一个钩子,在npm启动之前重命名此文件。然而,我很难弄清楚钩子什么时候会开火:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/21matchhack.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      DIR_NAME="/tmp/deployment/application/node_modules/react-router/lib"
      FILE_NAME="Match.js"
      FILE_RENAME="match.js"
      cd $DIR_NAME
      if [ -f $FILE_NAME ]; then mv $FILE_NAME $FILE_RENAME; fi
据我所知,EB将我的新应用程序版本解压缩到/opt/elasticbeanstalk/hooks/appdeploy/pre/20unzip.sh中的/tmp/deployment/application

set -xe

EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config  container -k app_staging_dir)
EB_APP_SOURCE_BUNDLE=$(/opt/elasticbeanstalk/bin/get-config  container -k source_bundle)

/usr/bin/unzip -o -d $EB_APP_STAGING_DIR $EB_APP_SOURCE_BUNDLE
为了让事情变得更加混乱和令人沮丧,下面的顺序似乎是在下一个部署步骤/30config_clean.sh中删除临时文件夹

set -xe

EB_CONFIG_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config  container -k config_staging_dir)

rm -rf $EB_CONFIG_STAGING_DIR
mkdir -p $EB_CONFIG_STAGING_DIR

如果在解压后的下一步中删除此目录,我的新版本将转到何处?由于一个简单的大写文件名,我在3周内无法部署到生产环境中。

我认为您可以使用的
预安装
钩子

类似于
package.json中的内容

"scripts" : {
   ....
   "preinstall":"mv Match.js match.js"   
   ....

}

嗯,这是个好主意。。。但是,因为它是一个我需要修复的节点模块,所以我认为应该改为postinstall:“postinstall”:“mv./node_modules/react router/lib/Match.js./node_modules/react router/lib/Match.js”很不幸,EB似乎没有运行postinstall,所以我尝试了PostStart,仍然没有运气:/谢谢您的帮助,我要坚持下去