Устранение ошибки «Нет базового набора href» в Angular и AngularJS: методы и примеры кода

“Базовый href не установлен. Укажите значение токена APP_BASE_HREF или добавьте базовый элемент в документ.” Это сообщение об ошибке часто встречается в веб-разработке при использовании фреймворков Angular или AngularJS. Это указывает на то, что базовый href не установлен, и его необходимо указать либо как значение для токена APP_BASE_HREF, либо путем добавления базового элемента в документ.

Чтобы устранить эту ошибку, вы можете использовать несколько методов в зависимости от вашего конкретного сценария. Я опишу несколько распространенных подходов с примерами кода:

  1. Установите базовый href в файле index.html:
    Откройте файл index.htmlв проекте Angular или AngularJS и добавьте базовый элемент с соответствующим значением href.. Этот метод подходит, если у вас есть одна базовая ссылка для всего приложения.

    <!DOCTYPE html>
    <html>
     <head>
       <base href="/" />
       <!-- ...other head elements... -->
     </head>
     <body>
       <!-- ...body content... -->
     </body>
    </html>
  2. Динамически установите базовый href с помощью токена APP_BASE_HREF:
    В приложении Angular или AngularJS вы можете установить базовый href динамически, указав значение для токена APP_BASE_HREFна основе вашего среду или конфигурацию. Этот метод полезен, когда вам нужно иметь разные базовые значения href для разных сред.

    // Angular
    import { Component, Inject } from '@angular/core';
    import { APP_BASE_HREF } from '@angular/common';
    
    @Component({
     selector: 'app-root',
     templateUrl: './app.component.html',
     styleUrls: ['./app.component.css']
    })
    export class AppComponent {
     constructor(@Inject(APP_BASE_HREF) private baseHref: string) {}
    }
    // AngularJS
    angular.module('app').run(['$location', function ($location) {
     $locationProvider.html5Mode(true);
     $locationProvider.baseHref = '/my-base-href';
    }]);
  3. Используйте файлы конфигурации для конкретной среды.
    Если у вас есть несколько сред (например, разработка, промежуточный запуск, производство), вы можете создать файлы конфигурации для конкретной среды и определить базовый href для каждой среды. Затем в процессе сборки или развертывания вы можете выбрать соответствующий файл конфигурации в зависимости от целевой среды. Этот метод позволяет легко управлять различными базовыми значениями href.

    // Angular
    // environment.ts
    export const environment = {
     production: false,
     baseHref: '/'
    };
    
    // environment.prod.ts
    export const environment = {
     production: true,
     baseHref: '/my-app/'
    };
    
    // app.component.ts
    import { Component } from '@angular/core';
    import { environment } from '../environments/environment';
    
    @Component({
     selector: 'app-root',
     templateUrl: './app.component.html',
     styleUrls: ['./app.component.css']
    })
    export class AppComponent {
     baseHref = environment.baseHref;
    }
    // AngularJS
    // config.js
    var environment = {
     production: {
       baseHref: '/my-app/'
     },
     development: {
       baseHref: '/'
     }
    };
    
    angular.module('app').constant('environment', environment);
    
    // app.run.js
    angular.module('app').run(['$location', 'environment', function ($location, environment) {
     $locationProvider.html5Mode(true);
     $locationProvider.baseHref = environment.production.baseHref;
    }]);

Это некоторые распространенные методы устранения ошибки «Нет базового набора href» в приложениях Angular и AngularJS. Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным требованиям.