У меня есть простое приложение Angular (Angular 10) и простой сервер, написанный на NodeJs. Мое серверное приложение работает на порту 3000, а мое приложение Angular работает на порту 4200. Я создал файл proxy.conf.json, указал URL-адрес моего сервера. Но как заставить http-клиент запрашивать не localhost:4200, а localhost:3000?
в чем сейчас основная проблема, вы можете одновременно запускать angular и node?
пожалуйста, отметьте ответ как принятый, если проблема решена. Спасибо
вам нужно обслуживать ваше угловое приложение на вашем сервере NodeJS.
ng работает на порту 4200, и это только для вас, чтобы провести горячее тестирование.
Решение A (не лучшая практика)
Если вы хотите, вы можете жестко закодировать его в http-запросе.
this.httpClient.get(
"http://localhost:3000/your path", { responseType: 'text' }
)
Решение B (используется как свойство, но одинаково для всех этапов)
Вы можете извлечь базовый путь URL-адреса к среде в environment.ts
export const environment = {
apiUrl: 'http://localhost:3000',
production: false
};
А потом использовать его в своей службе
import { environment } from 'src/environments/environment';
this.httpClient.get(
environment.apiUrl +"/your path", { responseType: 'text' }
)
Решение C (то же, что и решение B, но даст вам разные свойства для разных стадий)
Если вам нужны разные APIUrl для разработки и производства, вы можете использовать разные среды, например, environment.dev.ts , environment.prod.ts. Затем в вашем angular.json вы можете настроить эти среды как
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
"dev": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.dev.ts"
}
]
}
Затем вы можете выбрать, какая среда будет выполняться с помощью ng serve с помощью команды
ng serve --configuration=dev -> dev environment loaded
ng serve --configuration=production -> production environment loaded
Начните свои запросы с
http://localhost:3000/...