Olá,
Há alguns dias, começamos a ver o seguinte ao tentar construir um projeto Angular2 + existente usando @ types / lodash-es e lodash-es.
.../node_modules/@types/lodash/common/object.d.ts (): Cannot find name 'Exclude'.
Isso está fazendo com que uma compilação de produção não seja mais concluída com êxito.
O projeto está usando:
"@ types / lodash-es": "^ 4.14.5",
"lodash-es": "^ 4.17.4",
"texto datilografado": "~ 2.3.2"
Por https://github.com/lodash/lodash/issues/4225 e https://stackoverflow.com/questions/55018665/following-lodash-error-on-build-cannot-find-name-exclude , parece que houve uma mudança implementada que depende do Typescript 2.8+
Você pode fornecer uma atualização que não exija que a versão datilografada seja atualizada após 2.3+?
Parece-me que o problema pode estar sendo causado por @ types / lodash-es que requerem "@ types / lodash": "*" no arquivo package-lock.json. Isso resulta na seguinte entrada no arquivo package-lock.json:
"@types/lodash": {
"version": "4.14.123",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz",
},
a versão 4.14.123 contém uma alteração importante (usa Excluir, que está disponível apenas em Typescript 2.8+).
Como posso fazer uso de uma versão de @types \ lodash-es que não faz com que a versão mais recente de @ types / lodash seja incluída / usada no projeto?
Mais detalhes fornecidos em minha pergunta aqui: https://stackoverflow.com/questions/55123747/lodash-es-error-on-build-cannot-find-name-exclude
Parece-me que mesmo as versões anteriores de @ types / lodash-es estão fazendo com que a versão mais recente de @ types / lodash seja trazida para o projeto, o que significa que o projeto não será compilado porque @ types / lodash 4.14.123 é não é compatível com Typescript 2.3. * (porque Exclude é usado). No entanto, não tenho controle sobre qual versão de @ types / lodash é necessária, pois isso é tratado indiretamente @ types / lodash-es, que é a única dependência relacionada que tenho no projeto ...
package.json
{
"nome": "Teste",
"versão": "0.0.0",
"licença": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"teste": "teste de ng",
"lint": "ng lint",
"e2e": "ng e2e",
"bundle-report": "webpack-bundle-analyser dist / stats.json"
},
"privado": verdadeiro,
"dependências": {
"@ angular / animations": "^ 4.2.5",
"@ angular / comum": "^ 4.2.5",
"@ angular / compilador": "^ 4.2.5",
"@ angular / compiler-cli": "^ 4.2.5",
"@ angular / core": "^ 4.2.5",
"@ angular / forms": "^ 4.2.5",
"@ angular / http": "^ 4.2.5",
"@ angular / platform-browser": "^ 4.2.5",
"@ angular / platform-browser-dynamic": "^ 4.2.5",
"@ angular / router": "^ 4.2.5",
"@ asymmetrik / ngx-leaflet": "2.6.1",
"@ asymmetrik / ngx-leaflet-draw": "2.7.1",
"@ types / angular-ui-bootstrap": "^ 0.13.44",
"@ types / fullcalendar": "^ 3.5.0",
"@ types / googlemaps": "^ 3.26.14",
"@ types / highcharts": "^ 5.0.36",
"@ types / jquery": "^ 2.0.46",
"@ types / jqueryui": "^ 1.11.35",
"@ tipos / folheto": "1.2.7",
"@ types / leaflet-draw": "0.4.12",
"@ tipos / momento": "^ 2.13.0",
"@ types / node": "^ 6.0.79",
"@ ultimate / ngxerrors": "^ 1.3.0",
"angular2-virtual-scroll": "^ 0.3.1",
"babel-regenerator-runtime": "^ 6.5.0",
"bootstrap": "^ 3.3.7",
"core-js": "^ 2.4.1",
"dragula": "^ 3.7.2",
"font-awesome": "^ 4.7.0",
"fullcalendar": "^ 3.6.2",
"fullcalendar-scheduler": "^ 1.9.3",
"highcharts": "6.2.0",
"jquery": "^ 3.2.1",
"jquery-ui-sortable": "^ 1.0.0",
"jqueryui": "^ 1.11.1",
"folheto": "1.3.1",
"desenho de folheto": "1.0.2",
"lodash": "^ 4.17.4",
"momento": "^ 2.18.1",
"fuso horário do momento": "^ 0.5.14",
"ng-treetable": "^ 1.2.3",
"ng2-ckeditor": "1.1.9",
"ng2-dragula": "^ 1.5.0",
"ng2-pdf-viewer": "3.0.8",
"ngx-bootstrap": "^ 1.9.1",
"ngx-cookie-service": "^ 1.0.10",
"ngx-malihu-scrollbar": "^ 1.1.2",
"ngx-pipes": "~ 1.6.1",
"ngx-restangular": "^ 1.0.11",
"ngx-slick": "^ 0.1.3",
"primeng": "4.2.2",
"rxjs": "^ 5.1.0",
"carrossel liso": "^ 1.8.1",
"socket.io-client": "^ 2.0.4",
"zone.js": "^ 0.8.4"
},
"devDependencies": {
"@ angular / cli": "^ 1.7.4",
"@ angular / compiler-cli": "^ 4.0.0",
"@ types / jasmine": "2.5.38",
"@ tipos / folheto": "1.2.7",
"@ types / leaflet-draw": "0.4.12",
"@ types / node": "~ 6.0.60",
"codelyzer": "~ 2.0.0",
"jasmine-core": "~ 2.5.2",
"jasmine-spec-reporter": "~ 3.2.0",
"karma": "~ 1.4.1",
"karma-chrome-launcher": "~ 2.1.1",
"karma-cli": "~ 1.0.1",
"carma-cobertura-istanbul-repórter": "^ 0.2.0",
"karma-jasmine": "~ 1.1.0",
"karma-jasmine-html-reporter": "^ 0.2.2",
"transferidor": "~ 5.1.0",
"ts-node": "~ 2.0.0",
"tslint": "~ 4.5.0",
"typescript": "2.3.4",
"webpack-bundle-analyser": "^ 2.9.0"
}
}
Passos:
ERROR in /../node_modules/@types/lodash/common/object.d.ts (1689,12): Não é possível encontrar o nome 'Excluir'.
ERROR in /../node_modules/@types/lodash/common/object.d.ts (1766,12): Não é possível encontrar o nome 'Excluir'.
ERROR in /../node_modules/@types/lodash/common/object.d.ts (1842,34): Não é possível encontrar o nome 'Excluir'.
Tenho este erro acima. Alguma maneira de resolver isso??
Se eu substituir o arquivo ("/../node_modules/@types/lodash/common/object.d.ts") pelo código " https://codeshare.io/adWzlB ", então funciona ...
encontrou um problema semelhante, instalei a versão "4.14.121" de @ types / lodash e funciona bem, o que parece uma versão mais estável e compatível com a versão de texto digitado que instalei
dependencies é como abaixo em meu arquivo package.json:
"dependências": {
.........................,
"@ types / lodash": "4.14.121",
"typescript": "2.5.3",
}
Você pode instalar tipos para uma versão antiga do typescript usando tags npm. Por exemplo, tipos de lodash para texto datilografado 2.5 npm i -D @types/[email protected]
.
Acabei de atualizar typescript@~2.8.x
e o problema desapareceu!
@elouizbadr Sentiu lentidão na construção após atualizar para typescript@~2.8.x
. Meu tempo de construção leva muito tempo, quase duas vezes mais lento após a atualização para 2.8.x.
Eu estava tendo o mesmo problema, então segui os passos @ faizu88 e resolvi o problema.
Eu tenho o mesmo problema. Minha solução é executada abaixo do comando
aplicativo de cd
npm install @ types / [email protected] --save-exact
A esperança pode ajudar muitas pessoas. :)
Isso funcionou para mim: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33778#issuecomment -473358843 por @ j-oliveras
Este caso que enfrento quando trabalho em equipe que usa a mesma versão nodejs e
npm. Com o mesmo código-fonte não consigo construir, e meu amigo não tem um problema.
Quando eu verifico node_module e comparo Lodash. Eu descobri que a versão é
diferente. A versão correta é 4.14.116.
Na segunda-feira, 20 de maio de 2019 às 22h41, Toby Thain [email protected]
escreveu:
Existe uma explicação clara e uma solução sensata para isso?
-
Você está recebendo isto porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33778?email_source=notifications&email_token=AELTPL2WSZ6YGC5FNLAIF3TPWLBEJA5CNFSM4G5FWYT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVZHTIQ#issuecomment-494041506 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AELTPL3O5YGZXAHUDSEBN3TPWLBEJANCNFSM4G5FWYTQ
.
npm i -D @ types / [email protected]
este comando funcionou para mim também.
Acabei de atualizar
typescript@~2.8.x
e o problema desapareceu!
Eu defini typescript@~2.8.2 e funcionou !! obrigada !!
Comentários muito úteis
Você pode instalar tipos para uma versão antiga do typescript usando tags npm. Por exemplo, tipos de lodash para texto datilografado 2.5
npm i -D @types/[email protected]
.