【发布时间】:2026-01-17 11:35:01
【问题描述】:
我已经尝试了几个星期来为节点模块的某些问题创建一个解决方法,该问题给我带来了一些我仍然不明白的麻烦。我已经证明有效的简单解决方法是将文件“Match.js”重命名为“match.js”。
问题是因为这需要在 npm 启动之前发生,部署失败并恢复到旧版本。尽管启动序列失败,我要么需要能够强制 EB 采用我的新版本,要么在 npm start 之前创建一个重命名此文件的挂钩。但是,我很难确定该钩子应该何时触发:
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 周内部署到生产环境。
【问题讨论】:
标签: node.js amazon-elastic-beanstalk