我有2个AWS EC2实例在运行。
1个EC2(API_BACK_END)实例用作API后端服务器,NODE Express js与RDS对话
我正在用NodeJS部署React前端(使用create-react-app)的1个EC2实例,我正在开发模式下运行它(我还没有构建build文件夹),我可以确认我能够使用以下hack命中API_BACK_END
const BK_END_HOST = process.env.NODE_ENV !== 'development' ?
"localhost:3000" : process.env.REACT_APP_BACK_END_HOST_URL ;
我没有创建构建版本,我只是做了一个npm启动运行它在开发模式,我想确保我有正确的网络设置在AWS和我能够到后端。
问题是,当我做npm运行构建时,我对我需要做什么改变感到困惑,我从过去的几天里读了很多文章,但我不确定需要做什么。
这就是我如何调用我的endpoint
callApi = async () => {
console.log("---------------",BK_END_HOST);
const response = await fetch(BK_END_HOST+'/MLNumbers');
const body = await response.json();
if (response.status !== 200) throw Error(body.message);
const ret = body.melbCases[0].cases;
console.log(ret);
return ret;
};
我需要在前端也有快递吗? 如果是这样的话,我将如何从它调用我的后端,我需要某种方式将api调用代理到我的API_BACK_END服务器,我遇到了HTTP-PROX-中间件,但这仅适用于开发环境。
在后端应用程序或api(Java,nodejs,php,python等)中,最好使用硬编码在属性文件中的环境变量,因为我们只能为所有环境(开发,阶段,生产)生成一个工件。 在它开始之前,我们只需要导出所需的变量,仅此而已。
但是在现代应用程序中会发生什么:前端渲染框架,spa,用react,angular,vue等开发的javascript应用程序?
因此,如果您的react应用程序(javascript)需要经典的api url来交换信息,那么在javascript的任何部分都需要一个变量。 检查这个可以了解如何在javascript应用程序中注入变量。
还要记住,要部署构建的javascript应用程序,可以从基本工具(因为结果只是静态文件:index.html,css,bundle.js等)部署到高级服务器:
在构建过程之前,只需在一些javascript文件(如constants.js,setting.js,configuration.js等)中将localhost:3000更改为acme.api.com
将constants.js替换为经典的。properties文件,。env文件或任何类型的文件,在这些文件中我们设置了当工件从一个环境移动到另一个环境时发生变化的所有变量。
因此,您可以根据源代码附近或源代码之外的环境(如构建服务器)拥有一个属性文件:
最后,通过一些技巧,您可以在这些文件之间切换。 package.json示例
"scripts": {
"build:dev": "export $(cat .env.dev | xargs) && react-scripts build",
"build:dev": "export $(cat .env.staging | xargs) && react-scripts build",
"build:dev": "export $(cat .env.dev | prodution) && react-scripts build"
}
或者使用这些文件的名称和一些var,如node_environment。 检查这些链接以查看更多示例:
>
如何在package.json内设置环境变量
https://medium.com/@arrayknight/how-to-use-env-variables-in-package-json-509b9b663867
https://dev.to/rishikeshvedpathak/react-environment-specific-builds-using-env-with-cra-and-env-cmd-296b
优点:
缺点:
此方法类似于当前的变通方法。 检查这个:https://dev.to/rishikeshvedpathak/react-environment-specific-builds-using-env-with-cra-and-env-cmd-296b
还要检查Angular cli限制:每个环境都需要单独的构建
如果您的javascript应用程序在第一次调用时从某种rest端点获取或检索配置,该怎么办?
在我的应用程序中,我将/settings调用到此端点。 这将返回包含以下几个变量的json响应:
看看我的服务器:https://github.com/utec/geofrontend-server。 它是根据你的要求设计的。 我认为自述文件很好,但如果您需要帮助,请与我联系。 作为总结,如果您想将此nodejs服务器用于您的应用程序,步骤将是: