Definitelytyped: @ types / angular-ui-router | angular-ui-bootstrap | angular-translate "Модуль 'angular' не имеет экспортированного члена 'ui'"

Созданный на 17 июл. 2016  ·  19Комментарии  ·  Источник: DefinitelyTyped/DefinitelyTyped

  • [x] Я попытался использовать в этом репо последний файл angular-ui-router/angular-ui-router.d.ts и у меня возникли проблемы.

angular-ui-router не работает при использовании @ types / angular-ui-router.

"Module 'angular' has no exported member 'ui'"

теперь каждый файл красный и не компилируется

Похоже, наличие <reference types="angular" /> рядом с import * as angular from 'angular'; не сработает

То же самое происходит с angular-ui-bootstrap

Модули, зависящие от @types/angular , полностью не работают. Я не использую глобальную переменную angular, и когда я делаю import * as angular from 'angular' затем пытаюсь получить доступ к пространству имен модуля, например angular.ui.bootstrap , angular.translate , angular.ui , они все выдают ошибку Module 'angular' has no exported member 'ui'

приведенный ниже код не работает:

'use strict';

import * as angular from 'angular';

class Config {
    static $inject = ['$stateProvider', '$urlRouterProvider'];

    constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
         /*...*/
    }
}

angular.module('Module', []).config(Config);
@types Bug

Самый полезный комментарий

Та же проблема ... Просто установил @ types / angular

импортированный angular в машинописный файл:
import * as angular из 'angular';

Однако пространство имен ui недоступно на ng.

Получение:

Модуль angular не имеет экспортированного элемента ui.

Все 19 Комментарий

Это должно быть исправлено https://github.com/DefinitiTyped/DefinitiTyped/pull/10170.

вы можете использовать его как модуль:

import * as angular from 'angular';
import "angular-ui-router";

class Config {
    static $inject = ['$stateProvider', '$urlRouterProvider'];

    constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
        /*...*/
    }
}

angular.module('Module', []).config(Config);

или как глобальный, но используйте /// <reference types=... />

/// <reference types="angular" />
/// <reference types="angular-ui-router" />

class Config {
    static $inject = ['$stateProvider', '$urlRouterProvider'];

    constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
        /*...*/
    }
}

angular.module('Module', []).config(Config);

@mhegazy - это новое поведение для 2.0+ при использовании @types ? не может быть "настоящих" глобалов, которые вы включаете один раз и которые доступны везде?

@types/angular-ui-router и @types/angular-ui-bootstrap по-прежнему не работают

clipboard01

@mhegazy - это новое поведение для 2.0+ при использовании @types? не может быть "настоящих" глобалов, которые вы включаете один раз и которые доступны везде?

вы можете. /// <reference types="angular" /> должен сделать ng доступным в вашей компиляции.

@ types / angular-ui-router и @ types / angular-ui-bootstrap все еще не работают, кстати

последнее в https://github.com/DefinitiTyped/DefinitiTyped/tree/types-2.0 мне кажется правильным. Вы можете указать, что вам не подходит?
как вы импортируете angular?

Я использую import * as angular from 'angular' . когда я пытаюсь использовать angular.ui.IStateProvider (из angular-ui-router ), он не существует в angular. даже если я добавляю angular-ui-router в другой файл (мой базовый модуль), мне теперь нужно включать его в каждый файл?

вам тоже нужно импортировать это. import "angular-ui-router"; или добавьте ссылку на него /// <reference types="angular-ui-router" />

пожалуйста, сделайте переключатель в tsconfig.json, который заставит его вести себя по-старому, я не могу реорганизовать свой проект прямо сейчас :(

пожалуйста, сделайте переключатель в tsconfig.json, который заставит его вести себя по-старому

что такое "старый" способ?

если вы используете файлы объявлений, полученные в результате набора текста или tsd, он должен работать без изменений. это только для пакетов @types в npm. если вы не хотите использовать их в данный момент, вам не нужно.

У меня такая же проблема.

Та же проблема ... Просто установил @ types / angular

импортированный angular в машинописный файл:
import * as angular из 'angular';

Однако пространство имен ui недоступно на ng.

Получение:

Модуль angular не имеет экспортированного элемента ui.

Почему это закрыто? Означает ли это, что это никогда не будет исправлено, или есть еще одна проблема? (все еще сломано для меня)

Все еще сломан для меня тоже

И все еще

@asadsahi Это потому, что @types/angular самом деле не имеет участника ui . Этот член определяется @types/angular-ui-router .

Которые должны быть установлены отдельно:

npm i -D @types/angular-ui-router

Любой нашел решение еще?
@mhegazy может повторно открыть билет?

У меня возникла эта проблема при попытке обновить angular-ui-router с 1.0.0-beta.1 до 1.0.0-rc.1. Я также хочу обновить TS и избавиться от набора текста в пользу @types ... Все это я получил в приложении angular1, созданном yeoman-fountain. Меня это злит, потому что я зря трачу время :(
@mhegazy, не могли бы вы снова открыть билет?

Это по-прежнему является проблемой. Мой обходной путь до поры до времени:

    "fix-duplicate-dts": "rimraf node_modules/@types/oclazyload/node_modules/@types/angular && rimraf node_modules/@types/angular-ui-bootstrap/node_modules/@types/angular && rimraf node_modules/@types/ngtoaster/node_modules/@types/angular && rimraf node_modules/@types/angular-translate/node_modules/@types/angular && rimraf node_modules/@types/angular-mocks/node_modules/@types/angular && rimraf node_modules/@types/angular-gridster/node_modules/@types/angular && rimraf node_modules/@types/angular-storage/node_modules/@types/angular && rimraf node_modules/@types/ui-select/node_modules/@types/angular",
    "postinstall": "npm run fix-duplicate-dts",
    "postuninstall": "npm run fix-duplicate-dts"

Иногда мне просто нужно запустить задачу вручную, но большая часть времени это делается с постустановочных сценарием.

У меня была такая же ошибка Module 'angular' has no exported member 'xxx'. после того, как я обновил свою зависимость до @types/[email protected] .
В моем случае это было связано с несколькими определениями углового типа в моих node_modules. Угловые типы были определены в node_modules/@types/angular и в node_modules/@types/ng-file-upload/node_modules/@types/angular .

Это было связано с тем, что пряжа решалась угловатая у разных вариантов. У меня было две записи для angular с разным разрешением в файле yarn.lock:

"@types/angular@*":
  version "1.6.7"
  resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.7.tgz#8935a2b4a796fe7ca4f59f533f467804722fb0c4"
  dependencies:
    "@types/jquery" "*"

"@types/[email protected]":
  version "1.6.32"
  resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.32.tgz#fc791aad038227d9413eb5e552993e1076f8a509"

"@types/ng-file-upload@^11.1.31":
  version "11.1.34"
  resolved "https://registry.yarnpkg.com/@types/ng-file-upload/-/ng-file-upload-11.1.34.tgz#670fd0515c8e08668b27b7bbe30356b3b8011780"
  dependencies:
    "@types/angular" "*"

Удаление yarn.lock и повторная установка пряжи решили проблему, но в моем случае изменилось слишком много других зависимостей.

Использование yarn install --flat, вероятно, решило бы проблему, но я не хотел менять способ разрешения всех зависимостей.

Поэтому я исправил проблему, вручную изменив файл yarn.lock на

"@types/angular@*", "@types/[email protected]":
  version "1.6.32"
  resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.32.tgz#fc791aad038227d9413eb5e552993e1076f8a509"

"@types/ng-file-upload@^11.1.31":
  version "11.1.34"
  resolved "https://registry.yarnpkg.com/@types/ng-file-upload/-/ng-file-upload-11.1.34.tgz#670fd0515c8e08668b27b7bbe30356b3b8011780"
  dependencies:
    "@types/angular" "*"
Была ли эта страница полезной?
0 / 5 - 0 рейтинги