Definitelytyped: @ types / angular-ui-router | angular-ui-bootstrap | angular-translate "Módulo 'angular' não tem membro exportado 'ui'"

Criado em 17 jul. 2016  ·  19Comentários  ·  Fonte: DefinitelyTyped/DefinitelyTyped

  • [x] Tentei usar o arquivo angular-ui-router/angular-ui-router.d.ts mais recente neste repo e tive problemas.

angular-ui-router não funciona ao usar @ types / angular-ui-router.

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

cada arquivo agora é vermelho e não compilará

Parece que ter um <reference types="angular" /> ao lado de um import * as angular from 'angular'; não funcionará

A mesma coisa acontece com o angular-ui-bootstrap

Os módulos que dependem de @types/angular estão completamente quebrados. Não estou usando variável global angular e quando faço import * as angular from 'angular' , tento acessar um namespace de módulo, como angular.ui.bootstrap , angular.translate , angular.ui , eles todos dão o erro Module 'angular' has no exported member 'ui'

o código abaixo falha:

'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

Comentários muito úteis

Mesmo problema ... Acabei de instalar @ types / angular

angular importado em arquivo datilografado:
importar * como angular de 'angular';

No entanto, o namespace ui não está disponível no ng.

Obtendo:

O módulo 'angular' não tem o membro exportado 'ui'.

Todos 19 comentários

Isso deve ser corrigido por https://github.com/DefinitelyTyped/DefinitelyTyped/pull/10170

você pode usá-lo como um módulo:

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);

ou como global, mas use /// <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 este é o novo comportamento para 2.0+ ao usar @types ? não pode ter globais "verdadeiros" que você inclui uma vez e está disponível em todos os lugares?

@types/angular-ui-router e @types/angular-ui-bootstrap ainda estão quebrados btw

clipboard01

@mhegazy este é o novo comportamento para 2.0+ ao usar @types? não pode ter globais "verdadeiros" que você inclui uma vez e está disponível em todos os lugares?

você pode. /// <reference types="angular" /> deve tornar ng disponível em sua compilação.

@ types / angular-ui-router e @ types / angular-ui-bootstrap ainda estão quebrados btw

o mais recente em https://github.com/DefinitelyTyped/DefinitelyTyped/tree/types-2.0 parece certo para mim. você pode apontar o que não está funcionando para você?
como você está importando angular?

Estou usando import * as angular from 'angular' . quando tento usar angular.ui.IStateProvider (de angular-ui-router ), ele não existe no angular. mesmo se eu estiver adicionando o angular-ui-router em outro arquivo (meu módulo básico), agora preciso incluí-lo em todos os arquivos?

você precisa importar isso também. import "angular-ui-router"; ou adicione uma referência de tipos a ele /// <reference types="angular-ui-router" />

por favor, faça uma troca em tsconfig.json que o faça se comportar da maneira antiga, não posso refatorar meu projeto neste momento :(

por favor, faça uma mudança em tsconfig.json que o faça se comportar da maneira antiga

qual é a maneira "antiga"?

se você estiver usando arquivos de declaração obtidos de digitação ou tsd, ele deve funcionar sem alterações. isso é apenas para os pacotes @types no npm. se não quiser usá-los no momento, não é necessário.

Também estou tendo o mesmo problema.

Mesmo problema ... Acabei de instalar @ types / angular

angular importado em arquivo datilografado:
importar * como angular de 'angular';

No entanto, o namespace ui não está disponível no ng.

Obtendo:

O módulo 'angular' não tem o membro exportado 'ui'.

Por que está fechado? Isso significa que nunca será consertado ou há outro problema para isso? (ainda quebrado para mim)

Ainda quebrado para mim também

E ainda é

@asadsahi Isso porque @types/angular não tem nenhum membro ui . Este membro é definido por @types/angular-ui-router .

Que deve ser instalado separadamente:

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

Alguém encontrou uma solução?
@mhegazy você poderia reabrir o tíquete?

Acabei de ter esse problema ao tentar atualizar o angular-ui-router de 1.0.0-beta.1 para 1.0.0-rc.1. Eu também quero atualizar o TS e me livrar da digitação em favor de @types ... Tudo isso eu consegui no aplicativo angular1 gerado pelo yeoman-fountain. Isso me deixa com raiva porque estou perdendo meu tempo :(
@mhegazy, poderia reabrir o tíquete?

Isso ainda é um problema. Minha solução alternativa por enquanto:

    "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"

Às vezes, só preciso executar a tarefa manualmente, mas na maioria das vezes é feito com o script postinstall.

Eu tive o mesmo erro Module 'angular' has no exported member 'xxx'. depois de atualizar minha dependência para @types/[email protected] .
No meu caso, ele estava relacionado a várias definições de tipo angular em meus node_modules. Os tipos angulares foram definidos em node_modules/@types/angular e em node_modules/@types/ng-file-upload/node_modules/@types/angular .

Isso se deve ao fato de o fio se resolver angularmente com diferentes versões. Eu tinha duas entradas para angular com resolução diferente no arquivo 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" "*"

Remover o yarn.lock e executar novamente a instalação do yarn resolveu o problema, mas modificou muitas outras dependências no meu caso.

Usar yarn install --flat provavelmente teria resolvido o problema, mas eu não queria mudar a forma como todas as dependências são resolvidas.

Então, resolvi o problema alterando manualmente o arquivo yarn.lock para

"@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" "*"
Esta página foi útil?
0 / 5 - 0 avaliações