Jestem nowy na respons.js Zaimplementowałem jeden komponent, w którym pobieram dane z serwera i używam ich jak,
CallEnterprise:function(TenantId){
fetchData('http://xxx.xxx.xx.xx:8090/Enterprises?TenantId='+TenantId+' &format=json').then(function(enterprises)
{
EnterprisePerspectiveActions.getEnterprise(enterprises);
}).catch(function()
{
alert("There was some issue in API Call please contact Admin");
//ComponentAppDispatcher.handleViewAction({
// actionType: MetaItemConstants.RECEIVE_ERROR,
// error: 'There was a problem getting the enterprises'
//});
});
},
Chcę przechowywać adres URL w pliku konfiguracyjnym, więc kiedy wdrożyłem to na serwerze testowym lub na produkcji, muszę po prostu zmienić adres URL w pliku konfiguracyjnym, a nie w pliku js, ale nie wiem, jak używać pliku konfiguracyjnego wreak.js
Czy ktoś może mi pomóc, jak mogę to osiągnąć?
javascript
reactjs
configuration
webpack
flux
Dhaval Patel
źródło
źródło
Odpowiedzi:
Dzięki pakietowi webpack możesz umieścić w
externals
polu konfigurację specyficzną dla środowiskawebpack.config.js
externals: { 'Config': JSON.stringify(process.env.NODE_ENV === 'production' ? { serverUrl: "https://myserver.com" } : { serverUrl: "http://localhost:8090" }) }
Jeśli chcesz przechowywać konfiguracje w oddzielnym pliku JSON, to też jest możliwe, możesz wymagać tego pliku i przypisać do
Config
:externals: { 'Config': JSON.stringify(process.env.NODE_ENV === 'production' ? require('./config.prod.json') : require('./config.dev.json')) }
Następnie w swoich modułach możesz użyć config:
var Config = require('Config') fetchData(Config.serverUrl + '/Enterprises/...')
Do reakcji:
import Config from 'Config'; axios.get(this.app_url, { 'headers': Config.headers }).then(...);
Nie jestem pewien, czy obejmuje to Twój przypadek użycia, ale dla nas działa całkiem nieźle.
źródło
externals
oczekuje, że kod zostanie oceniony, musisz określić ciąg znaków JSON.Jeśli korzystałeś z aplikacji Create React, możesz ustawić zmienną środowiskową za pomocą pliku .env. Dokumentacja jest tutaj:
https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables
Zasadniczo zrób coś takiego w pliku .env w katalogu głównym projektu.
Możesz uzyskać do niego dostęp ze swojego komponentu za pomocą
źródło
REACT_APP_
REACT_APP_MYSETTING=value
go w nim, a następnie odwołanie się do niego tak, jakprocess.env.REACT_APP_MYSETTING
w moim kodzie JSX i zadziałało. Dzięki!Możesz używać pakietu dotenv bez względu na to, jakiej konfiguracji używasz. Pozwala utworzyć plik .env w katalogu głównym projektu i określić klucze w ten sposób
REACT_APP_SERVER_PORT=8000
W pliku wejściowym aplikacji po prostu wywołaj dotenv (); przed uzyskaniem dostępu do kluczy w ten sposób
źródło
REACT_APP_
Jeśli masz plik .properties lub .ini
Właściwie w przypadku, gdy masz plik, który ma pary klucz-wartość, takie jak ta:
Możesz zaimportować to do pakietu webpack za pomocą modułu npm o nazwie properties-reader
Uznałem to za bardzo pomocne, ponieważ integruję reaguję z frameworkiem Java Spring, w którym jest już plik application.properties. To pomaga mi trzymać całą konfigurację w jednym miejscu.
"properties-reader": "0.0.16"
const PropertiesReader = require('properties-reader');
const appProperties = PropertiesReader('Path/to/your/properties.file')._properties;
externals: { 'Config': JSON.stringify(appProperties) }
var Config = require('Config') fetchData(Config.serverUrl + '/Enterprises/...')
źródło