Hola,
Hace unos días, comenzamos a ver lo siguiente al intentar construir un proyecto Angular2 + existente haciendo uso de @ types / lodash-es y lodash-es.
.../node_modules/@types/lodash/common/object.d.ts (): Cannot find name 'Exclude'.
Esto está provocando que una compilación de producción ya no se complete correctamente.
El proyecto está usando:
"@ types / lodash-es": "^ 4.14.5",
"lodash-es": "^ 4.17.4",
"mecanografiado": "~ 2.3.2"
Según https://github.com/lodash/lodash/issues/4225 y https://stackoverflow.com/questions/55018665/following-lodash-error-on-build-cannot-find-name-exclude , parece que se implementó un cambio que se basa en Typecript 2.8+
¿Puede proporcionar una actualización que no requiera que la versión mecanografiada se actualice más allá de la 2.3+?
Me parece que el problema podría estar causado por @ types / lodash-es que requieren "@ types / lodash": "*" en el archivo package-lock.json. Esto da como resultado la siguiente entrada en el archivo package-lock.json:
"@types/lodash": {
"version": "4.14.123",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz",
},
la versión 4.14.123 contiene un cambio importante (utiliza Excluir, que solo está disponible en Typescript 2.8+).
¿Cómo puedo hacer uso de una versión de @types \ lodash-es que no hace que la última versión de @ types / lodash se incorpore / utilice en el proyecto?
Más detalles proporcionados en mi pregunta aquí: https://stackoverflow.com/questions/55123747/lodash-es-error-on-build-cannot-find-name-exclude
Me parece que incluso las versiones anteriores de @ types / lodash-es están provocando que la versión más reciente de @ types / lodash se incorpore al proyecto, lo que significa que el proyecto no se compilará porque @ types / lodash 4.14.123 es no es compatible con TypeScript 2.3. * (porque se usa Excluir). Sin embargo, no tengo control sobre qué versión de @ types / lodash se requiere, ya que esto se maneja indirectamente @ types / lodash-es, que es la única dependencia relacionada que tengo en el proyecto ...
package.json
{
"nombre": "Prueba",
"versión": "0.0.0",
"licencia": "MIT",
"guiones": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"prueba": "ng prueba",
"pelusa": "ng pelusa",
"e2e": "ng e2e",
"informe-paquete": "analizador-paquete-paquete-web dist / stats.json"
},
"privado": verdadero,
"dependencias": {
"@ angular / animaciones": "^ 4.2.5",
"@ angular / común": "^ 4.2.5",
"@ angular / compiler": "^ 4.2.5",
"@ angular / compiler-cli": "^ 4.2.5",
"@ angular / core": "^ 4.2.5",
"@ angular / formas": "^ 4.2.5",
"@ angular / http": "^ 4.2.5",
"@ angular / platform-browser": "^ 4.2.5",
"@ angular / platform-browser-dynamic": "^ 4.2.5",
"@ angular / enrutador": "^ 4.2.5",
"@ asymmetrik / ngx-leaflet": "2.6.1",
"@ asymmetrik / ngx-leaflet-draw": "2.7.1",
"@ types / angular-ui-bootstrap": "^ 0.13.44",
"@ tipos / calendario completo": "^ 3.5.0",
"@ types / googlemaps": "^ 3.26.14",
"@ types / highcharts": "^ 5.0.36",
"@ types / jquery": "^ 2.0.46",
"@ types / jqueryui": "^ 1.11.35",
"@ tipos / folleto": "1.2.7",
"@ types / leaflet-draw": "0.4.12",
"@ tipos / momento": "^ 2.13.0",
"@ tipos / nodo": "^ 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",
"calendario completo": "^ 3.6.2",
"planificador-calendario completo": "^ 1.9.3",
"highcharts": "6.2.0",
"jquery": "^ 3.2.1",
"jquery-ui-sortable": "^ 1.0.0",
"jqueryui": "^ 1.11.1",
"folleto": "1.3.1",
"leaflet-draw": "1.0.2",
"lodash": "^ 4.17.4",
"momento": "^ 2.18.1",
"moment-timezone": "^ 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-pipe": "~ 1.6.1",
"ngx-restangular": "^ 1.0.11",
"ngx-slick": "^ 0.1.3",
"primeng": "4.2.2",
"rxjs": "^ 5.1.0",
"slick-carrusel": "^ 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",
"@ tipos / jazmín": "2.5.38",
"@ tipos / folleto": "1.2.7",
"@ types / leaflet-draw": "0.4.12",
"@ tipos / nodo": "~ 6.0.60",
"codelyzer": "~ 2.0.0",
"núcleo de jazmín": "~ 2.5.2",
"jasmine-spec-reporter": "~ 3.2.0",
"karma": "~ 1.4.1",
"karma-chrome-launcher": "~ 2.1.1",
"karma-cli": "~ 1.0.1",
"karma -cover-istanbul-reporter": "^ 0.2.0",
"karma-jazmín": "~ 1.1.0",
"karma-jasmine-html-reporter": "^ 0.2.2",
"transportador": "~ 5.1.0",
"ts-node": "~ 2.0.0",
"tslint": "~ 4.5.0",
"mecanografiado": "2.3.4",
"webpack-bundle-analyzer": "^ 2.9.0"
}
}
Pasos:
ERROR en /../node_modules/@types/lodash/common/object.d.ts (1689,12): No se puede encontrar el nombre 'Excluir'.
ERROR en /../node_modules/@types/lodash/common/object.d.ts (1766,12): No se puede encontrar el nombre 'Excluir'.
ERROR en /../node_modules/@types/lodash/common/object.d.ts (1842,34): No se puede encontrar el nombre 'Excluir'.
Tengo este error anterior. ¿¿Alguna forma de resolver esto??
Si reemplazo el archivo ("/../node_modules/@types/lodash/common/object.d.ts") con el código " https://codeshare.io/adWzlB ", entonces funciona ...
encontré un problema similar, instalé la versión "4.14.121" de @ types / lodash y funciona bien, lo que parece una versión más estable y compatible con la versión mecanografiada que he instalado
las dependencias son las siguientes en mi archivo package.json:
"dependencias": {
.........................,
"@ types / lodash": "4.14.121",
"mecanografiado": "2.5.3",
}
Puede instalar tipos para una versión anterior de mecanografiado utilizando etiquetas npm. Por ejemplo, tipos lodash para mecanografiado 2.5 npm i -D @types/[email protected]
.
¡Acabo de actualizar typescript@~2.8.x
y el problema desapareció!
@elouizbadr ¿Experimentó lentitud en la compilación después de actualizar a typescript@~2.8.x
? Mi tiempo de compilación es demasiado largo, casi dos veces más lento después de actualizar a 2.8.x.
Estaba teniendo el mismo problema, luego seguí los pasos de
Yo tengo el mismo problema. Mi solución se ejecuta debajo del comando
aplicación de cd
npm install @ types / [email protected] --save-exact
La esperanza puede ayudar a muchas personas. :)
Esto funcionó para mí: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33778#issuecomment -473358843 por @ j-oliveras
Este caso al que me enfrento cuando trabajo en un equipo que usa la misma versión nodejs y
npm. No puedo construir con el mismo código fuente, y mi amigo no tiene un problema.
Cuando verifico node_module y comparo lodash. Encontré que la versión es
diferente. La versión correcta es 4.14.116.
El lunes 20 de mayo de 2019 a las 10:41 p.m. Toby Thain [email protected]
escribió:
¿Existe una explicación clara y una solución sensata para esto?
-
Estás recibiendo esto porque hiciste un comentario.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33778?email_source=notifications&email_token=AELTPL2WSZ6YGC5FNLAIF3TPWLBEJA5CNFSM4G5FWYT2YY3PNVWWK3TULDVH5HW4DMKFNVWWK3TULDVH5HW4DM2YY3PNVWWK3TULDVH5HW4DM2
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AELTPL3O5YGZXAHUDSEBN3TPWLBEJANCNFSM4G5FWYTQ
.
npm i -D @ tipos / [email protected]
este comando también funcionó para mí.
¡Acabo de actualizar
typescript@~2.8.x
y el problema desapareció!
Configuré typecript@~2.8.2 y ¡funciona! gracias !!
Comentario más útil
Puede instalar tipos para una versión anterior de mecanografiado utilizando etiquetas npm. Por ejemplo, tipos lodash para mecanografiado 2.5
npm i -D @types/[email protected]
.