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);
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
@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" "*"
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'.