我有一个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.
但是我认为我的应用只是在生产中崩溃了?这清楚地表明,我没有正确部署生产版本。
我哪里出错了?
答案 0 :(得分:0)
经过几个小时的试验,事实证明,在重新启动node.js应用程序或部署新版本时,Beanstalk默认运行命令npm start
。
可以更改此行为(配置>软件>修改>节点命令)。
一种临时解决方案(不一定是完美的解决方案)是:
node server.js
server.js
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