AWS Beanstalk CLI继续部署react / npm开发构建

时间:2019-01-03 18:21:56

标签: reactjs amazon-web-services npm deployment amazon-elastic-beanstalk

我有一个React应用和两个AWS Beanstalk实例:开发和生产。我正在尝试将上述React应用程序的开发版本部署到开发环境,并将生产版本部署到生产环境。

每个环境都设置有不同的环境变量(应调用的API的URL),因此输出应该不同。 当直接通过浏览器调用时,这两个API URL都可以工作,因此我知道这不是问题。

我认为在开发中进行部署的过程是这样的: 对于开发人员:npm start build> eb deploy -e development 对于产品:npm run build> eb deploy -e production

打开开发网页时,所有操作均按预期进行:开发env变量被调用并生成一些输出。

但是,当打开生产网页时,我收到一条错误消息(由于缺少环境变量):

This screen is visible only in development. It will not appear if the app crashes in production. Open your browser’s developer console to further inspect this error.

但是我认为我的应用只是在生产中崩溃了?这清楚地表明,我没有正确部署生产版本。

我哪里出错了?

1 个答案:

答案 0 :(得分:0)

经过几个小时的试验,事实证明,在重新启动node.js应用程序或部署新版本时,Beanstalk默认运行命令npm start。 可以更改此行为(配置>软件>修改>节点命令)。

一种临时解决方案(不一定是完美的解决方案)是:

server.js:

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, 'build')));

app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(8081);
  • 通过npm run build在本地构建文件
  • build/中删除.gitignore,以便将其包含在本地存储库中
  • git commit -a(除非您有理由这样做,否则请不要 git push

  • 通过eb deploy

  • 再次部署应用