Используйте среду для установки свойства proxy.config.js для ng serve - PullRequest
0 голосов
/ 21 декабря 2018

Название в значительной степени подводит итог.У меня есть файл proxy.conf.js, который попадает на ng serve, и я просто хочу получить целевой URL из файла ts среды или файла json, или мне сейчас все равно, япросто хочу, чтобы в одном месте хранился URL-адрес, который передает другие соответственно ...

Так environment.congif.ts (который не включен ни в одну из конфигураций, просто файл для хранения объекта настроек, который в настоящий момент питает environment.dev.ts и не в состоянии кормить proxy.conf.js);

export const environment = {
    production: false,
    apiUrl: 'http://localhost:12345'
};

Затем proxy.conf.js;

var settings = require('./src/environments/environment.config');

const PROXY_CONFIG = [{
    "/restapi/*": {
      "target": settings.environment.apiUrl,
      "secure": false,
      "changeOrigin": true,
      "logLevel": "debug"
    }
}]

module.exports = PROXY_CONFIG

Что по какой-то причине я, очевидно, не понимаю (особенно потому, что intellisenseзаполняет путь как для файла, так и для свойства) Я получаю сообщение об ошибке ng serve;

Cannot find module './src/environments/environment.config'
Error: Cannot find module './src/environments/environment.config'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
........

Итак, мой вопрос: почему он не может разрешить этот путь?Я просто хочу, чтобы один файл установил целевой URL, который будет кормить нужные места из environment.config.ts

ADDENDUM : Таким образом, файлы среды. *. Ts располагаются в /src/environments как слюбая установка по умолчанию.Файл proxy.conf.js находится в корне проекта с другими файлами по умолчанию, такими как package.json или angular.json.Все пути правильные, intellisense даже будет заполнять значения, но по какой-то причине proxy.conf.js не будет играть хорошо при импорте объекта const из среды (при сборке, хотя, как я сказал, intellisense находит все просто отлично).Таким образом, как и в заголовке, единственная проблема, с которой я сталкиваюсь, - это чтение URL-адреса в js-файл прокси-сервера из ts-файла среды, так что у меня есть только один файл для поддержки apiurl.

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

Вы можете сделать это аналогичным образом https://stackblitz.com/edit/angular-2uz6n8

Я сделал это просто, поместив обе переменные среды в один файл.


Почему бы вам простоиспользовать предопределенные переменные среды?Вы можете легко добавить некоторые свойства в environment.ts и environment.prod.ts и получить доступ к этим свойствам через import { environment } from './environment';, а затем просто использовать envoronment.ANY_KEY_YOU_WANT соответствующий файл среды.

0 голосов
/ 01 марта 2019

Таким образом, проблема здесь заключалась в версии машинописного текста, и его отсутствие в импорте требует поддержки.Если вы используете что-то вроде v3, вы не столкнетесь с той же проблемой.Спасибо за внимание!

0 голосов
/ 21 декабря 2018

Привет, Крис. Если вам нужно настроить прокси-сервер, вам нужно создать собственный файл с именем proxyconfig.json и поместить его в каталог приложения, который будет находиться в папке src вашего приложения.

1-симулируйте, что вам нужно получить некоторые данные с этой конечной точки, прежде чем вы настроите свой прокси-файл

this.http.get('http://locahost:3000/api/v1/people')
  

2- proxyconfig.json будет содержать этот json

{
  "/api/*": { // 
    "target": "http://localhost:3000", // the target url for backend endpoint
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": true
  }
}

3 - вам нужно внести некоторые изменения в ваш пакет. Json

   "scripts": {
      "start": "ng serve -- --proxy-config ../../proxyconfig.json",
      ...
   }
} 

4- конечная точка в вашем сервисе должна быть изменена на

this.http.get('/api/v1/people')
  

5 - запустите, прокси будет работать успешно

надеюсь, это поможет :))

...