我正在尝试访问appsettings.json文件中的url参数。原因是api URL与要发布的Development不同。我不完全确定解决此问题的最佳方法。
我找到了一种可行的解决方案:
如何使用asp.net core从appsettings.json获取配置数据并做出反应
正如我从上述线程了解到的那样,我需要创建一个服务并从React调用它?由于我总是(?)需要对同一项目执行API请求以接收API请求所需的URL,因此这似乎有些奇怪。
另一个建议是使用webpack,或者以某种方式将URL保存在客户端中。但这是否意味着每当我需要更改环境时,都需要在两个位置(后端和前端)进行更改?
这就是我的appsettings.json文件的外观(相同的变量,但.Development和.Publish的值不同)。
{
"Url": "localhost:44000"
}
在我的Startup类中,我获得了价值:
var urlValue =
_configuration.GetSection("Url");
我能否以某种方式一次从后端获取取决于环境的值并使用React接收它?
不知道我在这里想错了吗?
如果有人能指出我正确的方向,将不胜感激。
我对此的解决方案是使用.env文档,但仍使用.core launchSettings env。
为了使该解决方案有效,我需要env-cmd:
npm install env-cmd
添加了3个.env文件:
1. .env
2. .env.development
3. .env.prod
每个文件包含一个URL字符串:
REACT_APP_Url = https://localhost:44000
我在.core启动文件中添加了env检查:
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
else if (env.IsProduction())
{
spa.UseReactDevelopmentServer(npmScript: "build");
}
});
当我运行生产代码时,我指的是“ build”,因此在我的情况下,对象“ build”将要运行。
package.json文件:
"scripts": {
"start": "rimraf ./build && react-scripts start",
"build": "cross-env env-cmd -f .env.prod react-scripts start",
}
我现在可以使用以下方式访问该网址: {process.env.REACT_APP_Url}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句